Programming/C# - Window 91

C#/ Task와 Thread 클래스 비교 설명

1. Thread:명시적 스레드 관리: Thread 클래스를 사용하면 명시적으로 새로운 스레드를 생성하고 작업을 처리할 수 있습니다.오래된 방식: Thread는 기본적인 스레드 관리 기능을 제공하지만, 직접적인 스레드 생성 및 관리가 필요하므로 복잡한 코드가 될 수 있습니다.스레드 풀 미사용: Thread는 **스레드 풀(Thread Pool)**을 사용하지 않으며, 매번 새로운 스레드를 생성합니다. 이는 자원 관리 측면에서 비효율적일 수 있습니다.Thread t = new Thread(() => DoSomething());t.Start();   2. Task:고수준 비동기 프로그래밍: Task는 .NET에서 비동기 작업을 쉽게 관리할 수 있도록 도와주는 고수준의 비동기 처리 방식입니다.스레드 풀 사용:..

C#/ Dispatcher(디스패처)에 관해

# Dispatcher 클래스 WPF에서 UI 요소는 **단일 스레드 아파트 모델(STA)**로 동작합니다. 즉, UI는 메인(UI) 스레드에서만 수정할 수 있으며, 다른 스레드(예: 백그라운드 작업에서 처리한 결과를 UI에 반영하려는 경우)에서 직접적으로 UI 요소에 접근하면 스레드 충돌이 발생합니다.따라서 백그라운드 스레드에서 UI를 수정하려면, UI 스레드로 작업을 전달해야 하고, 이때 Dispatcher가 필요합니다. Dispatcher는 현재 스레드에서 UI 스레드로 작업을 전송하는 역할을 합니다.Invoke: UI 스레드에서 작업을 동기적으로 실행합니다. 즉, UI 스레드에서 작업이 완료될 때까지 호출한 스레드는 기다립니다.BeginInvoke: UI 스레드에서 작업을 비동기적으로 실행합니다...

C#/ try-catch문과 using문 비교

# `try-catch` 문과 `using` 문: 모두 **자원 관리**나 **오류 처리**를 목적으로 사용되지만, 그 목적과 사용되는 상황이 다릅니다. 각각의 차이점과 사용 방법을 설명하겠습니다.   # `try-catch` 문`try-catch` 문은 **예외(Exception) 처리**를 위해 사용됩니다. 코드에서 오류가 발생할 가능성이 있는 부분을 `try` 블록에 작성하고, 오류가 발생하면 그 오류를 `catch` 블록에서 처리합니다. try { using (StreamWriter text = File.CreateText(filePath)) { foreach (stri..

C#/ WPF 시작하기(구성)

1. WPF 앱(.NET framwork)로 프로젝트 생성 프로젝트를 생성하면 이렇게 솔루션이 구성된다.    2. App.xaml은 리소스 관련(디자인 요소 리소스)/ App.xaml.cs는 윈폼에서 Program.cs라 보면 된다. 프로그램 관련 앱 초기 세팅 클래스    3. MainWindow.xaml은 html + css라 생각하면 된다. 태그와 디자인 요소로 구성/MainWindow.xaml.cs는 윈폼 클래스라 생각하면 된다. 화면 구성 클래스