본문 바로가기
반응형

전체 글97

스레드_스레드 상태 조사_thread state C# 스레드 상태 조사 강좌C#에서 스레드 상태를 조사하려면 ThreadState 속성을 사용합니다. ThreadState는 스레드의 현재 상태를 나타내는 열거형으로, 여러 상태 값을 포함합니다. 이 강좌에서는 ThreadState를 이해하고, 예제 코드를 통해 다양한 상태를 확인해 보겠습니다.스레드 상태의 주요 값ThreadState는 다음과 같은 주요 상태 값을 포함합니다.Unstarted: 스레드가 생성되었지만 아직 시작되지 않은 상태.Running: 스레드가 실행 중인 상태.WaitSleepJoin: 스레드가 Sleep, Join 또는 다른 대기 상태에 있는 경우.Stopped: 스레드가 작업을 완료하고 종료된 상태.Aborted: 스레드가 비정상적으로 종료된 상태(예: Abort 호출로 인해)... 2025. 1. 6.
c# 스레드 기초 C# 스레드 기초 강좌C#에서 스레드는 여러 작업을 동시에 실행할 수 있도록 도와주는 중요한 기능입니다. 이 강좌에서는 스레드의 생성부터 관리, 종료까지 다양한 기초 작업을 배우고, 각각의 주제에 대해 예제 코드를 통해 학습하겠습니다.1. 스레드 생성C#에서 스레드를 생성하려면 System.Threading.Thread 클래스를 사용합니다.using System;using System.Threading;class Program{ static void Main() { Thread thread = new Thread(new ThreadStart(DoWork)); thread.Start(); } static void DoWork() { Conso.. 2025. 1. 6.
C# Struct vs Class: 차이점과 최적 사용 사례 C#에서 struct와 class는 객체를 정의하는 데 사용되지만, 중요한 차이점이 있으며 각각 특정 상황에서 적합합니다. 이를 비교하고 언제 사용하는 것이 유리한지 설명하겠습니다.1. 주요 차이점특성 Struct Class기본 형식값 형식 (Value Type)참조 형식 (Reference Type)메모리 할당스택(Stack)힙(Heap)복사 방식값 복사 (deep copy)참조 복사 (shallow copy)상속상속 불가상속 가능기본 생성자기본 생성자를 정의할 수 없음기본 생성자를 정의할 수 있음Null 가능성기본적으로 Null이 될 수 없음Null 값을 가질 수 있음변경 가능성기본적으로 불변 (Immutable)가변적 (Mutable)2. Struct를 사용하는 경우가벼운 데이터 구조메모리 사용량이.. 2025. 1. 6.
재미로 만드는 로또 번호 생성기 #2_로또 API를 이용해서 당첨 번호 조회하기. 로또 당첨 번호 API는 특정 회차의 로또 당첨 정보를 제공하는 REST API입니다. 이 API는 대한민국 동행복권 로또 사이트에서 제공하는 것으로, 특정 회차의 데이터를 JSON 형식으로 반환합니다.API URLhttps://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={회차번호}drwNo: 조회하려는 로또 회차 번호를 지정합니다. 예를 들어, 903회차를 조회하려면 drwNo=903을 사용합니다.응답 데이터 형식API의 응답은 JSON 형식으로 반환됩니다. 다음은 903회차를 조회했을 때의 예시 응답입니다:{ "totSellamnt": 96962255000, "returnValue": "success", "drwNoDate": "202.. 2025. 1. 5.
재미로 만드는 로또 번호 생성기 #1_중복 없는 번호 생성 로또 1등에 당첨될 확률은 약 1/8,145,060입니다. 아래는 C#으로 작성된, 1부터 45까지 중복 없이 6개의 숫자를 랜덤으로 뽑는 함수입니다. 이 함수는 HashSet를 사용하여 중복을 방지하고, Random 객체를 활용합니다.using System;using System.Collections.Generic;class Program{ static void Main() { // 랜덤 번호 생성 List lottoNumbers = GenerateLottoNumbers(); // 결과 출력 Console.WriteLine("랜덤 로또 번호: " + string.Join(", ", lottoNumbers)); } st.. 2025. 1. 4.
C#의 Garbage Collection (GC) 개념 C#의 Garbage Collection (GC) 개념Garbage Collection(GC)은 .NET 런타임의 핵심 기능으로, 메모리를 자동으로 관리하여 개발자가 명시적으로 메모리를 해제하지 않아도 되도록 합니다. 이는 메모리 누수(Memory Leak)와 같은 문제를 방지하고, 애플리케이션의 안정성과 성능을 높이는 데 기여합니다.1. Garbage Collection의 작동 방식GC는 더 이상 참조되지 않는 객체를 탐지하여 해당 객체가 점유하고 있던 메모리를 회수합니다. 주요 작동 과정은 다음과 같습니다:객체 할당새 객체가 생성되면 관리 힙(Managed Heap)에 메모리가 할당됩니다.관리 힙은 CLR(Common Language Runtime)에 의해 관리됩니다.객체 사용객체는 메모리에 할당된 .. 2025. 1. 3.
C#로 특정 폴더 내 파일 이름 변경 아래는 특정 폴더 내 모든 파일을 읽고, .exe 확장자를 가진 파일에서 파일 이름의 cam2라는 단어를 cam1로 바꾸는 C# 코드입니다.using System;using System.IO;class Program{ static void Main(string[] args) { // 특정 폴더 경로 설정 string folderPath = @"C:\Your\Folder\Path"; if (!Directory.Exists(folderPath)) { Console.WriteLine("지정된 폴더가 존재하지 않습니다."); return; } // 폴더 내 모든 파일 검색 s.. 2025. 1. 3.
WNetUseConnection 함수의 리턴값과 오류 코드 목록 WNetUseConnection은 Windows API의 함수로, 네트워크 리소스에 연결을 설정하는 데 사용됩니다. 이 함수는 Mpr.dll 라이브러리에 있으며, C#에서는 P/Invoke를 사용하여 호출합니다. 함수의 반환값은 성공 또는 실패를 나타내며, 실패 시 다양한 오류 코드를 반환합니다.리턴값 목록다음은 WNetUseConnection 함수의 주요 반환값 리스트입니다:성공 코드NO_ERROR (0)연결이 성공적으로 완료되었습니다.일반 오류 코드ERROR_ACCESS_DENIED (5)액세스 권한이 거부되었습니다.ERROR_INVALID_HANDLE (6)잘못된 핸들이 전달되었습니다.ERROR_NOT_ENOUGH_MEMORY (8)메모리가 부족하여 작업을 완료할 수 없습니다.ERROR_BAD_NE.. 2025. 1. 3.
아이템 1: 지역변수를 선언할 때에는 var를 사용하는 것이 낫다 아이템 1: 지역변수를 선언할 때에는 var를 사용하는 것이 낫다이 항목은 **지역 변수(local variable)**를 선언할 때, 명시적인 타입 선언 대신 var를 사용하는 것이 좋다는 점을 강조합니다. C#에서 var는 암시적 타입 추론(implicit type inference)을 사용하여 컴파일러가 변수의 타입을 자동으로 추론하도록 돕습니다. 이를 통해 코드가 더 간결하고 읽기 쉬워지며, 타입 변경이 있을 경우 코드 수정이 더 용이해집니다.1. var의 기본 개념var는 지역 변수의 타입을 컴파일러가 자동으로 추론하도록 하는 키워드입니다.변수 선언 시 타입을 명시하지 않고, 변수에 할당되는 값의 타입에 맞게 컴파일러가 해당 타입을 추론합니다.var는 컴파일 타임에 타입이 결정되므로, 실행 시 .. 2024. 12. 31.
원격 차등 압축(Remote Differential Compression) API 지원 기능 비활성화의 이점 원격 차등 압축 (RDC) API 지원 기능 비활성화의 이점1. 서버와 클라이언트 리소스 절약RDC는 변경된 데이터만 전송하기 위해 추가적인 시스템 자원을 사용합니다. 이 기능을 비활성화하면 자원 소모를 줄이고, 시스템 성능을 최적화할 수 있습니다.2. 파일 전송 속도 증가RDC는 변경된 데이터를 비교하고 전송하는데 시간이 소요될 수 있습니다. 이를 끄면 전체 파일을 빠르게 전송할 수 있어 속도가 향상될 수 있습니다, 특히 네트워크 대역폭이 충분한 경우 유리합니다.3. 복잡한 설정 회피RDC 기능을 사용하면 추가적인 비교 및 차등 압축 작업이 필요합니다. 기능을 끄면 파일 동기화 과정이 간단해지고 관리가 쉬워집니다.4. 레거시 시스템 및 호환성 유지오래된 시스템에서는 RDC가 제대로 작동하지 않거나 성능.. 2024. 12. 31.
반응형