본문 바로가기
반응형

C#46

C# ThreadPool: 스레드 관리와 작업 처리 최적화 C#의 ThreadPoolThreadPool은 C#의 .NET Framework와 .NET Core에서 제공하는 기능으로, 작업(Work Items)을 처리하기 위해 재사용 가능한 스레드 풀을 관리하는 클래스입니다. System.Threading.ThreadPool 네임스페이스에 정의되어 있으며, 애플리케이션의 성능을 높이고 스레드 관리의 복잡성을 줄이는 데 사용됩니다.ThreadPool의 주요 개념스레드 풀(Thread Pool)이란?스레드 풀은 **미리 생성된 스레드의 풀(pool)**입니다. 새 작업 요청이 있을 때마다 새 스레드를 만드는 대신, 기존에 생성된 스레드를 재사용합니다.이렇게 함으로써 스레드 생성 및 삭제로 인한 비용을 줄이고, 자원 낭비를 방지합니다.ThreadPool의 작동 방식작업.. 2024. 12. 30.
로컬 IP 127.0.0.1의 기본 포트 확인 및 설정 방법 로컬 IP 127.0.0.1은 기본적으로 컴퓨터 내부에서만 접근할 수 있는 루프백(loopback) 주소입니다. 이 IP와 함께 사용되는 기본 포트는 설정된 서비스나 애플리케이션에 따라 다릅니다. 포트를 확인하거나 변경하는 방법은 아래와 같습니다.1. 기본 포트 확인 방법(1) 운영 체제별 포트 확인Windows: netstat 명령어 사용명령 프롬프트(cmd)를 실행합니다.다음 명령을 입력합니다:netstat -an | find "127.0.0.1"출력 결과에서 127.0.0.1:로 나타나는 부분을 확인하세요.Linux/Mac: netstat 또는 lsof 사용netstat 명령어:netstat -an | grep "127.0.0.1"lsof 명령어:lsof -i -n | grep "127.0.0.1".. 2024. 12. 30.
C# Thread.Priority 속성 C# Thread.Priority 속성Thread.Priority 속성은 C#의 System.Threading 네임스페이스에서 제공하며, 특정 스레드의 우선순위를 설정하거나 가져오는 데 사용됩니다. 스레드 우선순위는 스레드가 운영 체제에서 CPU 시간을 얼마나 자주 할당받는지를 결정하는 데 영향을 줍니다.기본 설명정의:Thread.Priority 속성은 System.Threading.ThreadPriority 열거형 값을 사용하여 스레드의 우선순위를 지정합니다.값:ThreadPriority는 다음과 같은 우선순위 수준을 제공하는 열거형입니다.값 설명ThreadPriority.Highest가장 높은 우선순위입니다. CPU 자원을 더 자주 할당받을 가능성이 큽니다.ThreadPriority.AboveNorm.. 2024. 12. 27.
"C# 파일 복사 함수에서 불필요한 BinaryReader와 BinaryWriter 객체 사용에 대한 분석" 이 함수 FileCopy는 파일을 복사하는 기능을 수행합니다. 주어진 **원본 파일 (sSrc)**을 읽어서 **목적지 파일 (sDst)**에 씁니다. 이 과정은 버퍼링을 통해 진행되며, FileStream, BinaryReader, BinaryWriter 객체를 사용하여 파일을 순차적으로 읽고 씁니다. 아래에서 각 부분을 상세히 분석하겠습니다.1. 함수 시그니처 및 파라미터private bool FileCopy(string sSrc, string sDst)sSrc: 복사할 원본 파일 경로.sDst: 복사할 대상 파일 경로.반환값: bool (true 또는 false) — 복사가 성공하면 true, 실패하면 false.2. 버퍼 설정int nLength = 1024 * 1280; // 1,310,720.. 2024. 12. 26.
다른 프로세스에서 파일을 사용 중인지 확인하는 함수. CheckFileLocked 두 함수는 파일이 잠겨있는지(다른 프로세스에서 사용 중인지)를 확인하는 역할을 수행합니다. 주된 차이점은 파일 작업 방식, 자원 관리, 가독성 및 코드 안정성에 있습니다.1. 공통점기능: 두 함수 모두 특정 파일이 잠겨있는지 확인합니다.핵심 아이디어: IOException이 발생하는지 여부로 파일 잠금 상태를 판단합니다.결과 반환:파일이 잠겨있으면 true.그렇지 않으면 false.2. 차이점a. 첫 번째 함수public bool CheckFileLocked(string sFile){ FileStream fs = null; try { fs = new FileStream(sFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None);.. 2024. 12. 26.
"WinForms 환경에서 Thread.Sleep vs 사용자 정의 Delay 함수: 차이점과 활용 방안" Thread.Sleep 함수와 사용자 정의 Delay 함수는 각각 C#에서 시간을 지연시키는 방법이지만, WinForms 환경에서의 동작과 영향을 비교하면 다음과 같은 차이점과 장단점이 있습니다.1. Thread.SleepThread.Sleep는 호출된 스레드의 실행을 지정된 시간 동안 일시 중단합니다.특징호출된 스레드를 완전히 멈춤.CPU 리소스를 사용하지 않음.다른 이벤트를 처리하지 않음.장점간단하고 직관적:코드가 간결하며 추가 작업 없이 시간을 지연시킬 수 있습니다.CPU 효율적:지정된 시간 동안 CPU 리소스를 소비하지 않습니다.안정적:다른 작업이나 이벤트 루프에 영향을 주지 않습니다.단점UI 멈춤:WinForms 환경에서 UI 스레드(주 스레드)에서 호출하면 UI가 멈추고 응답하지 않습니다.이벤.. 2024. 12. 26.
"C# WinForms에서 멀티스레드로 안전하게 UI 컨트롤하기: InvokeRequired와 Invoke의 원리와 활용" C# WinForms에서 UI를 업데이트할 때 this.InvokeRequired와 this.Invoke를 사용하는 이유는 멀티스레드 환경에서 UI 스레드(Single-Threaded Apartment, STA)를 안전하게 다루기 위해서입니다. 이를 이해하기 위해 다음의 개념들을 알아야 합니다:1. WinForms의 UI 스레드 모델WinForms는 **단일 스레드(Single Thread)**에서 UI를 관리합니다. 즉, UI 컨트롤은 생성된 스레드(주로 메인 스레드)에서만 직접 접근할 수 있습니다.만약 다른 스레드(예: 백그라운드 작업을 수행하는 Thread 또는 Task)에서 UI를 직접 업데이트하면 InvalidOperationException이 발생할 수 있습니다.2. 멀티스레드에서 UI 업데이.. 2024. 12. 18.
C# partial 키워드 C# partial 키워드C#에서 partial 키워드는 클래스, 구조체, 또는 인터페이스 정의를 여러 파일에 나누어 작성할 수 있도록 허용하는 키워드입니다. 이를 통해 코드의 유지 보수성을 높이고, 큰 파일로 인한 복잡도를 줄일 수 있습니다.partial 키워드는 보통 팀 작업이나 자동 생성된 코드와 수동으로 작성한 코드가 섞여 있을 때 유용하게 사용됩니다. 예를 들어, 코드의 일부는 자동 생성되고, 다른 일부는 개발자가 작성하는 경우에 사용됩니다.주요 특징클래스, 구조체, 인터페이스에 사용:partial 키워드는 클래스, 구조체, 인터페이스에만 사용할 수 있습니다. 메서드나 속성에도 사용할 수 있습니다.예를 들어, partial class, partial struct, partial interface.. 2024. 8. 14.
사용자 정의 타입 ArrayList.Sort 사용자 정의 타입 ArrayList.Sort IComparable 상속 받고 CompareTo 메서드를 구현하고 ArrayList에서 Sort를 호출하면 CompareTo 메서드를 호출하게 된다.  public class Person : IComparable { public int Age; public string Name; public Person(int age, string name) { this.Age = age; this.Name = name; } public int CompareTo(object obj) { Person target = o.. 2024. 8. 1.
System.IO.MemoryStream System.IO.MemoryStream MemoryStream 타입은 이름 그대로 메모리에 바이트 데이터를 순서대로 읽고 쓰는 작업을 수행하는 클래스다.이를 이용하면 데이터를 메모리에 직렬화/역직렬화하는것이 가능하다.  // short와 int 데이터를 순서대로 memorystream에 직렬화. byte[] shortBytes = BitConverter.GetBytes((short)32000); byte[] intBytes = BitConverter.GetBytes(1652300); MemoryStream ms = new MemoryStream(); ms.Write(shortBytes, 0, shor.. 2024. 8. 1.
반응형