전체 글
-
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 개체의 올바른 사용을 보장하는 편리한 구문을 제공 - 관리되지 않는 리소스에 액세스 하는 클래스들을 사용한 후에 적절한 시기에 해제하여 해당 리소스를 다시 반납해야 하지만 사람이 수동적으로 하기에는 번거로..
-
HTTP, AJAX, 폴링, 롱폴링 기법, 웹소켓기타 2022. 1. 24. 10:30
HTTP 부터 웹 소켓 까지 각각의 배경, 사용 이유, 각 기능의 장단점을 알아보았다. [Http] -> HTTP는 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜 -> HTTP는 서버/클라이언트 모델 -> Client가 요청을 보내는 경우에만 Server가 응답하는 단방향 통신. Server로부터 응답을 받은 후에는 연결이 바로 종료 --> 즉각적인 갱신을 요구하는 실시간 통신에서는 불리하다. 다수의 요청을 반복해서 보내야 하기때문에 리소스 낭비가 심함. [AJAX] AJAX : 비동기적으로 서버와 통신을 하면서, 동적으로 페이지를 변경하게 한다. -> http의 단점을 보완해, 웹페이지를 리로드하지 않고 데이터를 불러와 페이지를 부분적으로 변경시킬 수 있다. -> 비동기 방식을 활용하..
-
C# - Application 클래스란?C# 2022. 1. 24. 10:14
[Application] MSDN의 설명으론 https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.application?view=netcore-3.1 Application Class (System.Windows) Encapsulates a Windows Presentation Foundation application. docs.microsoft.com - WPF 응용 프로그램 관련 기능을 캡슐화 하는 클래스 - 자기 자신(exe)을 래핑하고 제어하는 최상위 클래스 Application 클래스의 주로 사용하는 기능 두 가지 - 윈도우 응용 프로그램을 시작 (Application.Run())하고 종료(Application.Exit())시키는 메소드를 제공...
-
[STAThread] 란?C# 2022. 1. 24. 09:52
[STAThread] 해당 메서드가 STA (Single Threaded Arpartment) Thread모델로 실행된다는 것으로 만약 이를 지우면 윈도우 프로그램에 문제가 생기는 경우가 있다. 인터넷에 나와있는 설명은 어플리케이션의 COM 스레드모델이 단일스레드어파트먼트(STA: Single-Threaded Apartment)인 것 라고 설명하였다. 일단 여기서 COM이 무엇인지 모르겠어서 찾아보면, - Component Object Model 의 약자 - 현재는 .net 프레임워크로 지위가 넘어가는 상황 - com 형식이란 com 객체를 말한다. - .net은 기본적으로 MTA(멀티스레드어파트먼트)로 동작한다. - 그런데 전통적으로 com 객체는 STAThread 기반이어서 이를 명시해줘야 한다. -..
-
DLL이란?기타 2022. 1. 24. 09:09
DLL DLL은 다이나믹(Dynamic) 링크(Link) 라이브러리(Library)를 줄인 말로 개발하는 과정에서 자주 사용되는 표준적인 함수를 반복해서 작성하는 것을 방지하기 위해 자주 쓰인다. 라이브러리를 한번 만들어 놓으면 다시 만들 필요가 없이, 불러와 사용하면 되기 때문에 개발 속도에 큰 이점이 있다. 이러한 라이브러리를 언제 메인 프로그램에 연결하느냐에 따라서 2가지로 나뉜다. - Static Link - Dynamic link DLL은 이름에서 보았듯이 후자를 의미한다. Static link libray - 정적 링크라고 하며 컴파일 시점에서 라이브러리가 연결되어 실행 파일의 일부가 된다. DLL - 동적 링크라고 하며 실행 파일에서 해당 라이브러리의 기능을 사용 시에만, 라이브럴 ㅣ파일을 ..
-
C# - WindowForm user32를 활용한 메모장 스크린샷 프로그램C# 2022. 1. 22. 16:27
사용하고나 사용할 예정인 user32에 대한 조사를 했습니다. GetWindowPlacement -> 윈도우의 위치, 크기, 최대/최소화 상태를 한꺼번에 조사 -> 시스템은 내부적으로 윈도우의 좌표를 두쌍의 좌표와 한개의 사각형으로 기억 GetWindowRect - 작업 영역의 크기 얻음 FindWindow - 프로세스의 핸들을 찾아 반환한다. PrintWindow - 캡처를 원하는 창의 핸들과 DC(Device Context), 옵션 이렇게 3가지의 인수를 넘기면 해당창을 캡처한 비트맵 핸들을 반환한다. GetWindowRgn - 특성창의 크기 가져오기 CreateRectRgn - 그래픽상의 크기 가져오기 using System; using System.Collections.Generic; using ..