[C#] Callback, Delegate
SW/C# & WPF 2021. 6. 1. 23:04

Callback, Delegate Callback Method 콜백 메서드란 다음과 같이 표현할 수 있습니다. 다른 함수의 인자로써 이용되는 함수. 어떤 이벤트에 의해 호출되어지는 함수. A 라는 메서드에 B 라는 메서드를 인자로 넘겨주면서, A 메서드가 B 메서드를 특정 이벤트에서 호출하도록 한다고 가정해보겠습니다. 이 때, B 메서드가 콜백메서드가 됩니다. 델리게이트 델리게이트란 메소드를 참조하는 변수로 대리자 역할을 하는 녀석입니다. 델리게이트는 다음과 같이 사용합니다. 메소드와 동일하게 델리게이트(대리자) 선언 선언한 델리게이트 타입으로 델리게이트 변수를 생성 생성한 델리게이트 변수에 작업할 메소드를 참조 예제 namespace test{ delegate int testDelegate(int a,..

[WPF] Thread와 Dispatcher를 이용한 멀티스레딩
SW/C# & WPF 2021. 6. 1. 23:02

WPF Thread C# 과 WPF 의 Thread 관리에 대해서 정리한 내용입니다. C# 기본적으로 Main Thread가 존재하며 추가로 System.Threading.Thread 클래스로 Thread를 생성합니다. C#에서의 스레드는 생성자(Constructor)에 실행하고자 하는 method를 delegate로 지정하며, 객체를 생성해 Start() method를 호출하여 만들 수 있습니다. WPF 모든 WPF 프로그램은 최소한의 렌더링을 위한 백그라운드 쓰레드 와 UI 스레드(UI 인터페이스 관리) 두개의 쓰레드로 기동됩니다. UI Thread 는 STA(Single-Threadded Apartment) Main Thread로, UI 관련 작업을 모두 수행합니다. 즉, 사용자 입력을 받고 화면을..

[C#] HTTP 통신
SW/C# & WPF 2021. 6. 1. 21:09

HTTP 통신 C# HttpWebRequest, WebRequest 클래스를 활용하여 HTTP Request 요청을 보내고 응답을 받는 방법입니다. GET/POST 타입에 따라 request를 다르게 요청합니다. Get Request url/?/ + data 로 구성하여 url로 request를 요청합니다. (GET 방식) string url = "https://url-----/"; string response = string.Empty; // request setting HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.Timeout = 10 * 1000; request.Heade..

[C#] 싱글톤패턴
SW/C# & WPF 2021. 5. 28. 21:59

싱글톤 패턴 이 글은 점프 투 자바 를 정리하여 작성하였습니다. 싱글톤 패턴은 단 하나의 객체만을 생성하게 강제하는 디자인 패턴 입니다. 즉, 클래스를 통해 생성할 수 있는 객체는 유일하도록 만드는 것이죠. static 개념을 이해한다면 싱글톤을 이해하는 데 도움이 됩니다. 정적(Static) 변수와 메서드 변수/메소드 앞에 static 키워드를 붙여서 사용합니다. static 변수 항상 값이 변하지 않는 경우, static 키워드로 정적 변수로 사용하면 메모리 할당을 한번만 하게 되어 메모리 사용에 이점을 얻을 수 있습니다. 아예 값을 상수로 사용하기 위해 final 를 붙여 값을 변경할 수 없도록 할 수도 있습니다. 클래스 내의 변수를 static 으로 설정하면 같은 곳의 메모리 주소만을 바라보는 클..

[C#] 추상클래스 & 인터페이스
SW/C# & WPF 2021. 5. 28. 21:57

추상클래스 & 인터페이스 참고 블로그 를 바탕으로 작성하였습니다. 메서드는 선언부와 구현부로 구성되어있습니다. 선언부만 작성하고 구현부는 작성하지 않은 메서드를 추상메서드 라고 합니다. 추상클래스와 인터페이스는 모두 추상메서드를 포함하며 상속을 위한 클래스이기 때문에 객체를 생성할 수 없습니다. 즉 상속받은 클래스에서 선언된 메서드를 구현하게 됩니다. 추상클래스 (abstract class) 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스로 미완성 설계도 라고 할 수 있습니다. 구현부를 지닌 일반 메서드 또는 멤버변수를 가질 수 있고, 클래스 구현부 내부에 추상메서드가 하나 이상 포함됩니다. abstract 키워드로 정의해서 사용하고, 상속을 통해 자식클래스에서 exten..

[C#] 비동기식 프로그래밍 TAP
SW/C# & WPF 2021. 5. 19. 15:44

TAP(Task based Asynchronous Programming) 마이크로소프트 Docs 문서 를 바탕으로 내용 정리하였습니다. 동기식 프로그래밍 vs 비동기식 프로그래밍 코드는 일련의 명령문으로 이루어집니다. 다음 명령문이 시작되기 전에 각 명령문이 완료되는 구조입니다. 동기식 프로그래밍은 스레드에서 작업을 실행하는 동안 다른 작업을 수행하지 못하도록 차단합니다. 마치 어떤 데이터를 다운받는 동안 그 데이터를 다운받는 것을 지켜보며 어플리케이션이 멈춰있는 것처럼 보이는 것이죠. 비동기식 프로그래밍은 외부 리소스 할당과 작업 완료 시점에 따라 복잡한 순서로 코드를 사용하도록 설정합니다. 어떤 데이터를 다운받는 동안에도 어플리케이션이 다른 동작을 하도록 멈추지 않는 것이죠. 위의 예시처럼, 클라이언..