본문 바로가기

인생은 실전/C#12

[C#] TCP - 비동기로 TCP 원격 호스트 연결 상태 확인하기 / TcpClient.BeginConnect / ManualResetEvent.WaitOne / ManualResetEvent.Set TCP - 비동기로 TCP 원격 호스트 연결 상태 확인하기 Kafka나 RabbitMQ 등 여타 다른 미들웨어는 대부분 TCP/IP 통신을 통해 데이터를 주고 받는다. 따라서 통신을 위해 사전에 해당 호스트와 TCP 연결하기 전에 상대 네트워크의 상태를 확인해주는 로직을 필요로 하는 경우가 있다. (연결이 되어 있지도 않은데 무작정 Kafka 설정을 한다거나 데이터를 보낼순 없으니까..😂) 따라서 각 Driver의 인스턴스를 생성하고 안에 Connect 메서드를 호출할때 if문을 통해 네트워크 상태를 확인한다. if(CheckNetworkState()){ Driver Setting Event 연결 Timmer 실행 등 Driver 연결에 대한 주요 로직 } 이럴때 쓰기 좋은게 TcpClient.Begin.. 2024. 1. 26.
[WPF] Data Binding - ④ : MVVM 형태로 KeyDown 이벤트 사용하기 / ICommand / InputBindings Data Binding - ④ : MVVM 형태로 KeyDown 이벤트 사용하기 윈폼에서 Event를 처리하는 방법은 매우 간단합니다. Event를 처리하고자 하는 컨트롤에 Event를 연결하고 비하인드 코드에서 이벤트가 호출되면 처리하는 코드를 구현하면 되기 때문입니다. 하지만 WPF의 MVVM 형태로 따른다면 View의 비하인드 코드부에는 별다른 코드가 없고 ViewModel과의 바인딩을 통해 Event를 처리해야 합니다. 2022.11.25 - [인생은 실전/C#] - [WPF] Data Binding - ① : 데이터 바인딩(Data Binding) 기초 / 데이터 컨텍스트(Data Context) 속성 [WPF] Data Binding - ① : 데이터 바인딩(Data Binding) 기초 / .. 2023. 6. 24.
[LinqToDB] LinqToDB - ② : LINQ 데이터베이스 액세스 라이브러리를 사용해 DB에 연결하기 LINQ 데이터베이스 액세스 라이브러리를 사용해 DB연결 지난 시간에 T4 텍스트 템플릿을 사용해서 DB에 있는 스키마 들을 C# 클래스 형태로 생성해보았습니다. 2023.01.26 - [인생은 실전/C#] - [LinqToDB] LinqToDB - ① : T4 텍스트 템플릿을 사용해서 C# POCO 개체 생성하기 [LinqToDB] LinqToDB - ① : T4 텍스트 템플릿을 사용해서 C# POCO 개체 생성하기 T4 텍스트 템플릿(Text Template)을 사용해서 C# POCO 개체 생성 T4??? POCO 개체?? 다소 생소한 용어가 많습니다. 🟢 T4 : Text Template Transformation Toolkit의준말 (코드를 생성해주는 도구) 🟢 POCO : Plain Old CL.. 2023. 2. 3.
[LinqToDB] LinqToDB - ① : T4 텍스트 템플릿을 사용해서 C# POCO 개체 생성하기 T4 텍스트 템플릿(Text Template)을 사용해서 C# POCO 개체 생성 T4??? POCO 개체?? 다소 생소한 용어가 많습니다. 🟢 T4 : Text Template Transformation Toolkit의준말 (코드를 생성해주는 도구) 🟢 POCO : Plain Old CLR Objects, MS 측에서는CLASS로정의 궁극적으로 제가 공부할 내용은 1️⃣T4 텍스트 템플릿을 사용해서 데이터베이스에 접근하여 해당 테이블과 열에 대한 정보를 C# 클래스 형태의 코드(POCO 개체)로 만들고, 2️⃣만들어진 코드를 활용해서 LinqToDB 라는 라이브러리를 사용해 데이터베이스에 쉽게 접근하고 가공해보도록 하겠습니다. 따라서 이번 시간에는 T4 텍스트 템플릿을 사용해서 데이터베이스에 있는 테이.. 2023. 1. 26.
[WPF] Data Binding - ③ : ICollectionView를 이용한 Data 정렬(Sort), 그룹화(Group), 필터링(Filter), 동기화(CurrentChanged) ICollectionView를 이용한 Data 정렬, 그룹화, 필터링, 동기화 ※ 참고 Site ※ 1. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=goldrushing&logNo=130186019141 2. https://www.wpf-tutorial.com/listview-control/introduction/ 3. https://www.wpftutorial.net/DataViews.html#intro 오늘은 그동안 배웠던 DataBinding을 이용해서 간단한 데이터 컬렉션을 ListView라는 Control에 바인딩하고 데이터를 그리드화해서 보여주도록 하겠습니다. 먼저 WPF에서 데이터 컬렉션을 그리드화해서 보여줄 수 .. 2022. 12. 9.
[WPF] Data Binding - ② : 값 변환기(Value Converter) / IValueConverter / IMultiValueConverter Data Binding-② : 값 변환기(Value Converter)를 사용한 바인딩(Binding) ※ 참고 Site 1. https://www.wpf-tutorial.com/data-binding/value-conversion-with-ivalueconverter/ 2. https://www.wpftutorial.net/ValueConverters.html 지난 시간에는 서로 같은 타입의 프로퍼티일때 바인딩하는 방법(DataContext 사용)에 대해서 확인해보았습니다. ex) string → string / int → int 2022.11.25 - [인생은 실전/C#] - [WPF] Data Binding - ① : 데이터 바인딩(Data Binding) 기초 / 데이터 컨텍스트(Data Cont.. 2022. 11. 30.
[WPF] Data Binding - ① : 데이터 바인딩(Data Binding) 기초 / 데이터 컨텍스트(Data Context) 속성 Data Binding-① : 데이터 바인딩 기초 및 데이터 컨텍스트 속성 사용 본문은 https://www.wpftutorial.net/ 의 내용을 본인이 해석하고 별도로 관련 정보를 찾아서 정리하였습니다. 원본은 위의 링크를 참고해주세요! WPF는 흔히들 말하는 디자인 패턴중에서 MVVM 패턴으로 프로젝트 코드를 구현하는것이 가장 효율적이라고 합니다. 물론 작은 규모의 프로젝트나 개인적인 프로젝트라면 굳이 MVVM 구조를 고집하지 않아도 될것이라 생각합니다. 왜냐하면? MVVM의 최대 장점은 View와 ViewModel간의 의존성을 최소화해서 실무적으로 봤을때 협업하기에도 편하고 추후 유지보수시에 코드를 수정하기에도 편하다는 장점을 가지고 있기 때문입니다. (MVVM에 대한 자료와 정보는 인터넷에 많.. 2022. 11. 25.