본문 바로가기

분류 전체보기275

System.Threading Monitor Class 예제 분석 Monitor 클래스 (System.Threading) | 마이크로소프트 런 (microsoft.com) Monitor Class (System.Threading) Provides a mechanism that synchronizes access to objects. learn.microsoft.com Monitor 클래스는 객체에 대한 액세스를 동기화 하는 매커니즘을 제공합니다. Monitor 클래스를 사용해서 Random 클래스로 생성한 단일 객세의 액세스를 동기화하는 예제이다. Monitor.Enter, Monitor.Exit 함수를 이용해서 rnd 객체를 lock, release 하는 것을 확인할 수 있다. using System; using System.Collections.Generic; us.. 2023. 10. 24.
ConvertBSTRToString 함수 메모리 누수 문제 BSTR 값을 Char*로 변경을 하기 위해서 ConvertBSTRToString 함수를 사용했는데 메모리 누수가 발생이 되었다. ConvertBSTRToString 함수를 사용해서 리턴되는 Char*을 삭제를 해야 한다. VARIANT vtProp; //----------------------------------------------------------------------- VariantInit(&vtProp); hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0); if (hr == S_OK) { char* pszChar = _com_util::ConvertBSTRToString(vtProp.bstrVal); _temp = CString(pszChar); delete[.. 2023. 9. 14.
safearray 값을 SafeArrayAccessData 이용해서 읽어 오는 방법 MSDN을 찾아 봤지만 debug 상태에서는 값을 확인했는데 어떻게 해서 값을 읽어 올 수 있는지 예제를 찾아 보다가 발견했다. 아래 링크를 들어가 보면 원본을 확인 할 수 있다. 내가 이것을 찾게 된 이유는 CodeProject의 질문과 같이 IP주소를 읽어 오기 위해서였다. 덕분에 좋은 정보를 얻었고 혹시 사라질까봐 내 블로그에 남겨둔다. https://www.codeproject.com/Questions/884234/How-Do-I-Get-Ip-Address-From-Win-Networkadaptercon [Solved] How Do I Get Ip Address From Win32_Networkadapterconfiguration (Ps: How Do I Get Rate Of Flow) - Cod.. 2023. 9. 7.
시놀로지 NAS DSM 7.x 업데이트 후에 공유폴더 로그인 실패 문제 해결방법 이번에 NAS DSM 버전이 6.x에서 7.x로 변경이 되어 업데이트를 진행했다. NAS를 함께 사용하는 사람들중에 \\192.152.152.245와 같이 탐색기에서 아이피 주소를 접근을 시도하면 로그인이 되지 않는 문제가 확인되었다. 특정 사용자만 이런 문제가 발생해서 PC 문제려니 했는데 웹으로 접속을 하면 문제가 없고 NAS 제어판에 들어가 Blocking 여부를 체크 했는데도 문제가 없다. 그래서 NAS의 "로그 센터"를 확인해 보니 특정 IP 사용자의 접근에 아래와 같은 이벤트가 확인 되었다. failed to log in via [SMB] due to [NTLMv1 not permitted]. LTLMv1에 대한 문제였다. 그래서 검색을 해보니 DSM 7.x버전으로 업데이트 되면서 보안이슈로 .. 2023. 8. 30.
UpdateData() 함수 Param 의미 MFC에서 UpdateData()를 사용해서 Control의 값을 변수로 적용하거나 반대로 처리한다. void etModalProgressThread::UpdateData(BOOL b) { etModalProgressDlg * pDlg = (etModalProgressDlg *)m_pMainWnd; pDlg->m_title = m_title; pDlg->m_Text = m_Text; pDlg->SendMessage(UM_MODAL_UPDATEDATA, (WPARAM)b, 0L); } https://learn.microsoft.com/en-us/cpp/mfc/dialog-data-exchange?view=msvc-170 Dialog Data Exchange Learn more about: Dialog Da.. 2023. 7. 7.
ON_CONTROL_RANGE를 이용해서 같은 이벤트 처리를 한 함수로 해결 방법 아래 예는 ComboBox를 3개 만들고 각각의 ComboxBox Select Change 이벤트를 처리하는 함수를 만들었다. ON_CBN_SELCHANGE(IDC_CB_1, OnCbnSelchangeCombo1) ON_CBN_SELCHANGE(IDC_CB_2, OnCbnSelchangeCombo2) ON_CBN_SELCHANGE(IDC_CB_3, OnCbnSelchangeCombo3) 위와 같이 3개의 이벤트 함수를 만들었는데 각각의 처리 내용이 비슷하다면 하나의 함수로 만들고 싶을 것이다. 이때 사용 할 수 있는 것이 ON_CONTROL_RANGE이다. ON_CONTROL_RANGE(CBN_SELCHANGE, IDC_CB_1, IDC_CB_3, OnCbnSelchangeComboByID) Contro.. 2023. 7. 5.
WPF MVVM TextBlock Foreground Binding WPF MVVM으로 View에 TextBlock을 Model에서 글자 색을 변경하기 위해서 Binding을 해서 사용할 수 있다. TextBlock의 Foreground는 Color가 아니라 Brush를 사용한다. 아래 예제는 CheckBox를 값이 변경 될 때 TextBlock의 Text의 내용과 Color가 변경 되게 하는 예제이다. Change Text Color 위와 같이 CheckBox를 만들어 bChecked = True이면 아래 TextBox의 checkStatus의 글자와 색상을 변경하도록 하려고 한다. public string checkStatus { get; set; } = "Selected"; public System.Windows.Media.Brush checkBrush { get;.. 2023. 6. 16.
WPF MVVM Window Close Action 처리 WPF MVVM으로 Window View와 Model 분리가 되어 있을 때 OK, Cancel 버튼을 눌러 Window를 닫는 방법이다. 간단하게 Close Action을 이용해서 닫을 수도 있는데 DialogResult를 받아서 처리를 할 때는 아래와 같이 처리해서 사용을 했다. https://learn.microsoft.com/en-us/dotnet/api/system.action-1?view=net-7.0 Action Delegate (System) Encapsulates a method that has a single parameter and does not return a value. learn.microsoft.com 다른 방법도 많을 것이다. 아래 예제는 System에서 제공하는 delega.. 2023. 6. 15.
C# delegate event, EventHandler 사용 예제 C#에서 이벤트를 보내는 방식이다. 이벤트를 보내는 것은 함수를 호출하는 것과 같다. 아래 예제 소스의 호출 순서도 함께 올린다. C++ PostMessage와 같이 윈도우 Queue에 넣고 현재 프로세스를 진행하고 나중에 Message를 처리하는 그런 방식으로 구현을 하려면 Event Handler 방식으로는 처리를 할 수가 없다. 한 Class에서 다른 Class의 함수를 처리하면서 현재 Class에서 관련 내용을 마무리 하는 방식으로 구현을 할 때 이용을 할수가 있다. 아래 예제 코드는 Console 프로그램이다. using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using Syste.. 2023. 6. 3.
LIST