C#4 [C#/Winform] Timer 클래스를 사용하는 방법 주기적으로 특정 행위를 반복하는 배치 프로그램이나 에이전트 프로그램을 구현할 때,.NET의 Timer 클래스를 사용하면 편리하게 구현할 수 있다. 하지만 .NET에는 세 가지 Timer 클래스가 존재한다.System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.Timer각각 사용 방법도 다르고, 동작하는 개념의 차이도 있다. 만약 Timer 객체를 사용하고자 할 때는, 동작 원리를 이해하고 상황에 맞추어 선택할 수 있어야 한다.1. Timer 클래스의 종류 및 동작 원리1.1 System.Windows.Forms.Timer WinForms UI 스레드에서 실행되는 타이머로, 주로 UI 업데이트가 필요한 경우 사용UI스레드에서 실행되므로, UI 컨트롤을.. 2025. 3. 25. [C# Basic] Delegate 개념부터 활용까지 C# 에서는 Delegate 문법이 존재한다. delegate 는 한국어로 "위임하다" 라는 뜻을 가진다. 도대체 어떤 것을 위임한다는 걸까? 오늘은 Delegate에 대해서 깊이 파헤쳐보자.목차Delegate란?Delegate는 어떻게 동작하는가?Delegate의 기본 사용법Delegate 활용 예제Delegate와 이벤트의 관계Action과 FuncDelegate를 사용하는 이유1. Delegate란?C#에서 delegate는 특정 메서드를 참조할 수 있는 타입이다. 쉽게 말해, 메서드에 대한 포인터 역할을 하며, 특정 메서드를 변수처럼 저장하고 실행할 수 있게 해준다. C/C++의 함수 포인터와 유사하지만, 타입 안전성을 보장하여 더 안전하게 사용할 수 있다.2. Delegate는 어떻게 동작하는가.. 2025. 2. 10. [C#/Winforms] "응답 없음 (Not Responding)" 을 해결하는 방법 Winforms은 UI 단일 스레드(Single Threaded Apartment, STA) 모델을 따른다. 즉, 모든 UI 관련 작업은 기본적으로 메인(UI) 스레드에서 실행된다는 뜻이다. 따라서, 시간이 오래걸리는 연산 (ex. 파일 I/O, 네트워크 요청, 복잡한 연산 등) 을 UI 스레드에서 직접 실행한다면 메시지 루프가 blocking 되어 "응답 없음 (Not Responding)" 상태가 발생할 수 있다. 본 글은 "응답 없음" 상태를 해결하는 방법에 대해서 소개한다.해결 방법은 크게 3가지로 볼 수 있다. 1. BackgroundWorkerBackgroundWorker 클래스를 사용하면 UI 스레드가 아닌 백그라운드 스레드에서 작업을 수행UI 업데이트가 필요할 경우 ProgressCha.. 2025. 2. 5. 오디오 포맷 : WAV 오늘은 오디오 파일 포맷에 대해서 알아보려고 한다. 평소 우리가 흔하게 접하는 오디오파일의 확장자는 mp3, mp4, wav.. 등등 있다. 그 중에서 가장 흔하게 사용되는 wav 에 대해서 자세히 알아보도록 하자목차WAV 란?WAV의 구조실습 (Header의 활용)1. WAV 란?웨이브 폼 오디오 포맷 (WaveForm audio file format)의 준말로 개인용 컴퓨터에서 오디오를 재생하는 마이크로소프트와 IBM 오디오 파일 포맷 표준 사실 우리가 개발자로써 알아야 할 중요한 부분은WAV 는 비압축 오디오 포맷 (손실 압축 없이 그대로 저장해둔 파일)이라는 것이다. 자 그럼, WAV가 무엇인지 알았으니 자세하게 파헤쳐보자2. WAV의 구조 위 사진을 통해 WAV 파일의 구조를 간략히 설명한다면 .. 2025. 1. 29. 이전 1 다음