EventWaitHandle 두가지 상태를 가지며 Set을 통해 Non-Signal -> Signal, Reset을 통해 Signal -> Non-Signal로 상태 변경이 가능하다. Non-Signal : 제어를 반환하지 않음(잠금) Signal : 제어를 반환(열림) private EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.ManualReset); AutoResetEvent EventWaitHandle을 사용하지 않고 따로 생성도 가능하다. Set하면 대기중인 스레드 중 첫번째로 대기 시작한 쓰레드 하나를 진행하시킨다. private static AutoResetEvent autoEvt = new AutoResetEvent(fal..
Spinner를 GIF로 할까 어떻게 할까 많은 방법이 있었지만, 고민하다 FontAwesome을 발견했습니다. FontAwesome은 웹을 만들때나 사용하는줄 알았는데 WPF에서도 사용가능했다는게 새롭게 다가왔습니다. 1. 설치 FontAwesome Pro와 무료가 있어서 무료를 사용하면된다. 그리고 해당 API를 가지고 Nuget으로 만든게 수십개가 있어서 뭘 사용해야할지 애매한데 FontAwesome5가 게시 날짜도 비교적 최근에다가, 나쁘지 않아보여서 그걸 사용했다. 지금 6beta가 나와있는데, 아직 베타라 잘 모르겠다. 2. 사용법 아래 깃허브에 들어가면 Getting Started가 있어 쉽게 따라 할 수있다. GitHub - MartinTopfstedt/FontAwesome5: WPF co..
오늘은 C#에서 어떤 로그라이브러리를 사용하는게 가장 성능이 우수할지 정리해보려고합니다. Log4net Log4net은 이미 유명한 Log4J를 포팅한 로그라이브러리 다양한 기능을 제공 동기식 로깅 -> 비동기 처리도 가능하다. 단점 이것저것 세팅할게 많고 사용법을 익혀야한다. NLog 비동기식 로깅 지원 Loss율이 낮다 구조적 로깅 지원(NLog 4.5 이상) 치명적인 단점으로 Logger자체에 문제가 생기면 Fatal 에러가 난다고 한다. 사실인지는 직접 해봐야 알것같다. Benchmarking 5 Popular .NET Logging Libraries We tested the top five .NET logging frameworks on the market against each other: L..
안녕하세요 반나무입니다. 그래서 WPF, MVVM 어떤건지 대충 이해는 가는데 어떻게 쓰는건가 하면.. 1. WPF프로젝트 생성 2. 프로젝트 내부 구조(폴더) 생성 3. 기본 세팅 1. WPF 프로젝트를 생성합니다. 2. 프로젝트 내부 구조(폴더) 생성 Model, VIew, ViewModel 폴더를 생성하고 View에 MainWindow.Xaml을 넣습니다. (View에 MainWindow를 넣고 프로젝트를 종료 후 다시 열어야 정상작동합니다,) 3. 기본 세팅 1. 64bit로 개발하는것이 웬만해선 좋기 때문에 특별히 32bit개발이 필요한게 아니라면 64bit로 변경합니다. 2. MainViewModel.cs 생성 -> 바인딩 처리 public class MainViewModel : INotify..
WPF Windows Presentation Foundation WinForm 잘쓰고 있는데 WPF왜 쓰냐? 라고 한다면.. 명확하게는 디자인과 개발의 분리입니다. XAML단에서 디자이너가 작업을하고 개발자는 Class를 만들어 작업합니다. 디자인과 개발의 분리로 프로젝트는 좀 더 빠르고 안정적으로 개발되어집니다. MVVM패턴 만약 WPF로 개발하는데 MVVM을 사용하지 않는다고 하면, 그냥 WinForm 프로젝트로 변경해 진행하는게 더 효과적이라고 생각할 정도록 WPF에서 MVVM은 중요하다고 한다. 그럼 WPF배워서 쓰고있는데 왜 MVVM패턴으로 만드냐? 스프링으로 웹개발하실때 MVC패턴 쓰는것과 같습니다. 개발자와 디자이너가 각자의 역할을 더욱 더 잘할 수 있게 명확히 분리 해주려는 패턴입니다. 하..