C#
-
C# - RichTextBox 자동 스크롤 하기C# 2022. 2. 22. 16:03
for (int i = 0; i < 10000; i++) { richTextBox1.Invoke(new Action(delegate () { //richTextBox1 += i.ToString(); 로 작성시 자동 스크롤 안됨 richTextBox1.AppendText(i.ToString()); richTextBox1.ScrollToCaret(); })); } .ScrollToCaret();를 적용하여도 richTextBox1 += i.ToString(); 이런식으로 작성하면 스크롤이 안된다. 자동 스크롤 기능을 구현하기 위해서는 AppendText()를 사용해줘야 한다는 것을 알게 됐다.
-
Visual Studio: Warning IDE0006 Error encountered while loading the project 경고 해결C# 2022. 2. 11. 09:55
[c# - 경고 IDE0006 프로젝트를로드하는 동안 오류가 발생했습니다.] Close Visual Studio Open a Visual Studio Developer Command Prompt Set environment variable “TraceDesignTime” to true (set TraceDesignTime=true) Delete .vs directory/.suo file Restart VS from the command prompt you set the environment varaible (devenv) Open the solution Check 'C:\Users\nitesh dandekar\AppData\Local\Temp\HelloWorld_*.designtime.log' and l..
-
Invoke, BeginInvoke, 크로스 스레드 예외C# 2022. 1. 24. 16:36
[Invoke] - 스레드를 따로 분리하지 않고 시간이 오래 걸리는 계산을 진행하면 그동안 UI 핸들링을 담당하는 MainThread가 UI 컨트롤을 핸들링 하지 못하기 때문에, 계산하는 동안 UI가 멈추고, 제어가 불가능 하며 응답 없음을 출력할 때도 있다. - 이를 해결하기위해 thread 사용하게 되는데 코딩하여 실행하면 관련 Exception을 보게 된다. - 메인 스레드가 아닌 다른 스레드에서 ui 컨트롤에 접근하려고 하기 때문이다. - 이 때 invoke 를 사용하여 실행하려고 하는 메소드의 대리자(delegate)를 실행시키면 해결할 수 있다. -> Control의 Invoke는 다른 스레드에서 직접 접근할 수 없는 윈폼 컨트롤 작업에 대해 Invoke를 통해 작업 자체를 대리자(delega..
-
C# - CancellationTokenC# 2022. 1. 24. 16:33
[CancellationToken] - CancellationToken은 비동기 작업을 취소하는 용도로 사용 - 작업 취소와 관련된 타입은 CancellationTokenSource 클래스와 CancellationToken 구조체 - CancellationTokenSource 클래스는 Cancellation Token을 생성하고 Cancel 요청을 Cancellation Token들에게 보내는 일을 담당 - CancellationToken은 현재 Cancel 상태를 모니터링하는 여러 Listener들에 의해 사용되는 구조체 [CancellationToken 사용 절차] 1. CancellationTokenSource 필드를 선언 -> private CancellationTokenSource cancelT..
-
Task와 async, await 비교/관계C# 2022. 1. 24. 16:27
https://www.sysnet.pe.kr/3/0/5488 C# 비동기 함수 async, await 와 Task의 관계에 대해 질문 드립니다. C# 비동기 함수 async, await 와 Task의 관계에 대해 질문 드립니다. [링크 복사], [링크+제목 복사] 조회: 1227 글쓴 사람 종범 (kjb_jh at naver.com) 홈페이지 첨부 파일 부모글 보이기/감추기 비동기 함수와 www.sysnet.pe.kr 비슷한 의문점이 있어 찾아보다 발견하여 참고하였습니다. [Task와 async, await] - 기존 비동기 지원 방식 자체가 Delegate의 BeginInvoke 를 이용해 스레드 풀을 이용하는 것만 지원하고 있었기 때문에 비동기 작업 이후의 처리에 제약이 많았다. -> 이러한 제약을 ..
-
c# Error - NullReferenceExceptionC# 2022. 1. 24. 15:04
NullReferenceException was unhandled by user code An exception of type 'System.NullReferenceException' occurred in FleckWebsocketServer.exe but was not handled in user code Additional information: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 디버깅 도중 이런 오류가 떴다. 이유는 간단했다. if문에서 저 runLoop 변수를 초기화 해주지 않은 상태에서 값을 비교했었다. if(runLoop == null || runLoop.Status == TaskStatus.RanToCompletion) { MessageBox.Show("loop 실행"); ..
-
C# - Managed DLL, Unmanaged DLLC# 2022. 1. 24. 12:34
Managed DLL과 Unmanaged DLL 대표적으로 나누면 CLR이 제공하는 서비스를 제공 받느냐 못받느냐로 나눌 수 있다. 이름 대로 Managed DLL은 제공 받고, Unmanaged DLL은 제공받지 못한다. 내용을 좀 더 조사해 보았다. - Managed DLL은 Common Language Runtime (줄여서 CLR) 환경에서 동작. - Managed DLL은 CLR에 의해 제공되는 실행시의 각종 서비스 (보안 및 메모리 관련)를 받을 수 있는 것을 말한다. - Managed DLL은 CLR에 의해 해당 컴퓨터에 적합한 기계 언어를 능동적으로 생성하여 범용성을 높였다. - Managed DLL은 Visual Basic .NET과 C# 컴파일러가 생성 - Unmanaged code는 ..
-
C# - using문C# 2022. 1. 24. 11:42
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/using-statement using 문 - C# 참조 using 문(C# 참조) 이 문서의 내용 --> IDisposable 개체의 올바른 사용을 보장하는 편리한 구문을 제공합니다. C# 8.0부터 using 문은 IAsyncDisposable 개체의 올바른 사용을 보장합니다. 예제 다음 예제에서 docs.microsoft.com using 문 -IDisposable 개체의 올바른 사용을 보장하는 편리한 구문을 제공 - 관리되지 않는 리소스에 액세스 하는 클래스들을 사용한 후에 적절한 시기에 해제하여 해당 리소스를 다시 반납해야 하지만 사람이 수동적으로 하기에는 번거로..