• c# System.Timers.Timer로 비주얼 컨트롤 제어하기

    멀티뜨레드로 인한 크로스-뜨레드 예외 발생 메인 뜨레드로부터 분리된 뜨레드에서 비주얼 컨트롤을 제어하려 하면 원칙적으로 크로스-뜨레드 오류가 발생한다. 이러한 오류는 디버그 빌드에서는 예외로 처리되지만 릴리스 빌드에서는 그냥 오류가 생긴 대로 출력하고 넘어간다. 릴리스 모드에서 예외로 처리가 되지 않는다고 괜찮은 게 아니라 오류를 무시하는 것이므로 엉뚱한 결과가 나타날 수 있다. 따라서 디버그 빌드에서 분명하게 조치를 취해야 한다….

  • 대장동 사건 곽상도 1심 무죄 판결에 대한 검찰과 법원의 책임

    사건의 개요 이재명이 경기도 성남시장을 하던 2015년부터 성남시 분당구 대장동에 아파트 단지가 들어섰다. 당연히 큰 돈이 벌리는 사업이었다. 이 사업은 성남도시개발공사와 화천대유자산관리 등이 함께 진행했는데 후자의 회사는 4억 원 정도를 투자하여 4천억 원 정도를 챙겼다. 개발 도중 해당 지역에서는 문화재가 발굴되었으며 당시 곽상도는 국회의원으로서 문화재청을 관리하는 교육문화체육관광위원회현재는 문화체육관광위원회 소속이었고 그의 아들 곽병채는 화천대유자산관리에서 문화재 담당…

  • [c#] 멀티뜨레드 동기와 비동기

    동기는 하나의 뜨레드에서 순차적으로 처리되는 걸 말하고 비동기는 여러 뜨레드들에서 동시에 처리되는 걸 뜻한다. 동기를 synchronous라 하고 비동기는 부정 접두사 ‘a~’를 붙여서 asynchronous라 한다. 각각 줄여서 sync와 async라고도 하며 async는 ‘에이씽크’라고 읽는다. ‘아씽크’라고 읽는 거 아니다. synchronous를 네이버 영어사전에서 찾아보면 제일 먼저 ‘동시 발생하는’이라는 뜻이 나온다. 여기에서 혼란이 시작된다. 프로그래밍에서 이해하는 것은 사전적 의미와 완전 반대다….

  • c# is 연산자로 비주얼 컨트롤 검색하기

    아래 예제는 폼에 있는 비주얼 컨트롤들 가운데 TextBox들만 처리하는 거다. is는 형 변환을 할 수 있는지 확인하는 연산자다. Controls는 Control의 컬렉션이다. 즉 Control을 TextBox로 타입캐스트할 수 있느냐를 묻는 거다. 아래의 코드는 오류로 처리된다. Controls에 담겨 있는 건 인스턴스이고 TextBox는 클래스 자체이기 때문이다. 이렇게는 가능하다.

  • c# String 잔기술들 1

    String과 string의 차이 String은 클래스이고 string은 변수형이다. 그러나 아래 예제를 보면 이들 사이에 차이가 없다는 걸 알 수 있다. string은 변수형인데 new로 만들 수 있고 String은 클래스인데 new 없이 그냥 쓸 수 있다. 이들은 이렇게 변수형과 클래스 모두의 기능을 한다. 더 정확하게는 string이 String의 껍데기다. string is an alias for System.String in .NET.– Built-in reference…

  • c# ComboBox 잔기술들

    dictionary 바인드하기 딕셔너리 자체를 바인드하는 게 아니라 키나, 밸류의 필드를 해야 하는 거에 유의한다. wpf DataColumn 바인드하기 wpf의 콤보박스는 ComboBox.DisplayMember가 아니고 ComboBox.DisplayMemberPath를 이용한다.

  • c# RichTextBox 줄 간격 설정하기

    좀 복잡하다. RichTextBox는 윈도우즈 차원에서 제공되는 컨트롤인데 델파이와 달리 .네트는 win32 api를 제대로 랩wrap하지 않아서 아래와 같이 win32 api를 직접 제어해야 한다. SendMessage의 아규먼트로는 아래와 같이 IntPtr을 넣는 게 원칙이긴 한데 조금 더 복잡하다.

  • c# RichTextBox 출력 빠르게 하기

    RichTextBox.AppendText는 느리다. 수십 줄 출력하는 데에도 그려지는 게 보일 정도다. 아래의 방법들을 쓰면 빠르게 출력된다. RichTextBox.BeginUpdate/EndUpdate 만들기 일반적인 비주얼 컨트롤들의 경우 BeginUpdate/EndUpdate가 있다면 이걸 쓰는 게 빠르다. AppendText로 추가되는 내용을 바로바로 출력하는 게 아니라 출력을 멈췄다가 추가할 것들을 다 추가한 뒤 한꺼번에 출력하는 거다. 하지만 RichTextBox에는 BeginUpdate/EndUpdate가 없다. 아래와 같이 상속해서 써야 한다. String.Join 이용하기…

  • [c#] RichTextBox RTF(rich text format) 기본적인 이용 방법

    TextBox는 메모장이고 RichTextBox는 워드패드다. 문자열에 스타일을 적용하려면 RichTextBox를 써야 한다. RichTextBox는 윈도우즈 차원에서 제공되는 것이며 .네트는 win32 api를 랩wrap하여 지원한다. 그러나 완벽하지는 않아서 높은 수준으로 이용하려면 직접 win32 api를 제어해야 한다. 스타일이 적용된 것은 rich text format이라 하며 줄여서 rtf라고 한다. 스타일을 제어하는 데에는 크게 세 가지 방법이 있다. 문자열을 입력하기 전에 스타일을 설정하기 스타일을…