반응형 C#19 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. C# CS0227 오류 설명 및 해결 방법 C#에서 CS0227 오류는 "스위치 문의 식이 값이 아니거나 조건식이 아닌 형식"이라는 오류 메시지로, 주로 switch 문에서 발생합니다. 이 오류는 switch 문에서 사용된 표현식이 유효한 값이 아니거나, 조건으로 사용할 수 없는 타입일 때 발생합니다.오류 원인CS0227 오류는 switch 문에 사용되는 표현식이 컴파일러가 처리할 수 있는 형식이 아닐 때 발생합니다. switch 문은 기본적으로 정수형 값(예: int, enum), 문자형 값(예: char), 문자열(예: string), 또는 bool 타입과 같은 몇 가지 특정한 타입만 허용합니다. 만약 switch 문에서 이러한 타입이 아닌 값을 사용하면 CS0227 오류가 발생합니다.예시 코드 (오류 발생)string value = "Hel.. 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# 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. 프로퍼티 class 클래스이름 { 데이터형식 필드이름; 접근한정자 데이터형식 프로퍼티이름 { get { return 필드이름; } set { 필드이름 = value; } } } class MyClass { private int myField; public int MyField { get { return myField; } set { myField = value; } } } MyClass ojb = new Mylass(); obj.MyField = 3; Console.WriteLine( obj.MyField ); 2023. 8. 5. winform 시스템메뉴 MenuStrip 오른쪽버튼 protected override void OnMouseClick(MouseEventArgs e) { base.OnMouseClick(e); // 마우스 우측 버튼이 눌린 경우 if (e.Button == System.Windows.Forms.MouseButtons.Right) { // 컨텍스트 메뉴 객체를 만들고 ContextMenu ctxMenu = new ContextMenu(); // 컨텍스트 메뉴에 들어갈 2개의 MenuItem을 생성해서 추가 MenuItem menuItem = new MenuItem("새로 고침"); menuItem.Click += menuRefresh_Click; ctxMenu.MenuItems.Add(menuItem); menuItem = new MenuItem("종료").. 2023. 7. 22. as, is 연산자 as 연산자 형변환이 가능하면 지정된 타입의 인스턴스 값을 반환하고, 가능하지 않으면 null을 반환하기 때문에 null 반환 여부를 통해 형변환이 성공했는지 판단할 수 있다. as연산자는 참조형 변수에 대해서만 적용할 수 있고 참조형 타입으로의 체크만 가능하다. Computer pc = new Computer(); Notebook notebook = pc as Notebook; if( notebook != null ) { notebook.CloseLid(); } is 연산자 형변환의 가능성 여부를 bool type의 결과 값(true / false)으로 반환한다. Notebook pc = new Notebook(); if(pc is Notebook) { Console.WriteLine("변수 pc는 N.. 2023. 7. 16. 이전 1 2 다음 반응형