[c#] rtf(rich text format) 줄 바꾸기 \par

rtf를 적용한 문자열을 .네트의 richTextBox에 어싸인하면 커서는 문자열의 제일 끝으로 간다. richTextBox의 가로 스크롤 바를 활성화한 경우에는 문자열의 왼쪽이 잘려 보일 수 있다. 이 문제를 해결하기 위해 문자열의 끝에 줄을 바꾸는 \par를 붙여 봐도 소용이 없다. 이거 하나만으로는 줄이 바뀌지 않기 때문이다. \par는 그 뒤에 무언가가 올 때 비로소 작동한다. 따라서 richTextBox에 문자열을 어싸인한 뒤…

[c#] bindingList를 dataGridView에 바인딩하기 – INotifyPropertyChanged

다차원 구조의 대이터를 출력할 때 dataGridView를 쓴다. dataGridView에 쉽게 쓸 수 있는 대이터는 dataTable이지만 이건 다양한 기능들을 가지고 있어서 느리다. 다차원 구조의 대이터를 이리저리 정적으로 이용할 거면 dataTable이 좋지만 그저 동적으로 대이터만 빠르게 쓰고 읽으려면 class를 bindingList에 넣은 뒤 이걸 dataGridView에 바인딩하는 게 낫다. 일반적으로 dataGridView에 출력되는 내용을 빠르게 읽고 쓸 일은 없기 때문에 대부분의…

[c#] 32 비트 애플리캐이션 메모리 늘리기

64 비트 윈도우즈에서 32 비트 애플리캐이션을 써야 할 때가 있다. 32 비트 라이브러리를 써야 하는 경우가 대표적인 예다. 이때 이론적으로는 2gb까지 메모리를 쓸 수 있지만 사실적으로는 1gb를 조금 넘은 때 애플리캐이션이 멈춘다. 64 비트 윈도우즈에서 32 비트 애플리캐이션은 이론적으로 메모리를 4gb까지 쓸 수 있다. 사실적으로는 3gb를 조금 넘게 이용할 수 있다. 컴파일을 할 때 largeaddressaware…

[ls api] t1637 – 프로그램 매매 대이터가 존재하지 않는 경우

t1637을 이용하면 특정 종목의 프로그램 매매 대이터를 한 번에 최고 100 영업일 꺼까지 다운로드할 수 있다. 프로그램 매매가 모든 종목들을 대상으로 이루어지는 건 아니다. 프로그램 매매로 거래가 되지 않은 종목에 대해 위의 트랜잭션으로 리퀘스트를 하면 서버는 널을 보내지 않고 아예 리퀘스트 응답 패킷을 보내지 않는다. 이례적인 방법이다. 비슷한 경우 보통은 빈 대이터를 보내므로 이걸 받아서…

[c#] 윈도우즈 폼즈 애플리캐이션 강제로 종료하기

흔히 애플리캐이션을 종료할 때 아래의 방법들을 쓴다. 위 방법들의 문제는 form closing 이벤트가 실행된다는 거다. 이 이벤트에 무언가 내용이 있다면 실행이 될 텐데 그렇다면 강제 종료가 아니다. 묻지도 따지지도 않고 강제로 끝내 버리려면 아래와 같이 한다. 첫째 방법은 말 그대로 매인 뜨레드만 종료한다. 따라서 여전히 작동하고 있는 다른 뜨레드가 있다면 마치 애플리캐이션이 종료된 거처럼 보여도…

[c#] 프로세스의 cpu 점유율 측정하기 – PerformanceCounter

To read from a performance counter, create an instance of the PerformanceCounter class, set the CategoryName, CounterName, and, optionally, the InstanceName or MachineName properties, and then call the NextValue method to take a performance counter reading.– PerformanceCounter Class CategoryName과 CounterName을 아규먼트로 넣어야 하는데 InstanceName 등은 넣어야 할 때가 있고 그러지 않아도 될 때가 있다는 말이다….

[c#] 간단한 멀티 뜨레드, 크로스 뜨레드, 인보크 예제

위 예제는 뜨레드를 새로 만들어서 래이블에 문자를 출력하는 거다. TaskFactory.StartNew를 이용하여 새로운 뜨레드를 만들고 실행한다. Control.Invoke를 이용하여 새로 생긴 뜨레드에서 크로스 뜨레드 오류를 피하여 매인 뜨레드에서 만들어진 래이블에 문자를 출력한다.

[프로그래밍] 쉬운 인터패이스 설명 – interface와 class 비교

interface는 클래스와 비슷하여 c#의 경우 type system 항목에 같이 설명되어 있다. 아래의 예제는 인터패이스 안에 하나의 메떠드를 선언한 뒤 두 개의 서로 다른 내용으로 실행되게 하는 거다. 클래스 안에서는 메떠드를 선언하고 실행부까지 코딩할 수 있지만 인터패이스에선 그렇게 할 수 없다. 대신 클래스가 인터패이스를 상속하여 자유롭게 실행부를 코딩할 수 있다. 심지어 여러 인터패이스들을 동시에 상속할 수도…