C# Invoke로 크로스 스레드 해결, 간략한 소스 응용 [C#강좌] C# Invoke는 이럴 때 써야 합니다. 아래 에러 메시지 보시죠. InvalidOperationException이(가) 처리되지 않았습니다. 또는, 이럴 때도 C# Invoke를 써야 하죠. 처리되지 않은 'System.InvalidOperationException' 형식의 예외가 System.Windows.Forms.dll에서 발생했습니다. 추가 정보: 크로스 스레드 작업이 잘못되었습니다. 'tb_received' 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스 되었습니다. 위 에러가 발생했을 때 해결하는 방법은 3가지였습니다. (C# Invoke를 사용하지 않았을 때) 1. 델리게이트를 선언하고 그곳에 맞는 콜백 함수..
[MFC강좌] 폴더 파일 경로 5. PathSkipRoot 등 16개 함수 void PathSetDlgItemPath( HWND hDlg, int id, LPCSTR pszPath ); PathCompactPath와 유사하다. id로 지정된 Dialog Item에 출력하기 적합한 길이로 경로를 잘라준다. LPCTSTR PathSkipRoot( LPCTSTR pszPath ); 루트 경로를 제거한다. 로컬 경로인 경우 드라이브문자(c:\)가 지워지고, UNC 경로인 경우 서버 이름, 공유 폴더 이름이 제거된다. PathSkipRoot( "c:\temp\test.txt") = temp\test.txt PathSkipRoot( "\\server\c$\temp\test.txt") = temp\test.txt v..
[MFC강좌] 폴더 파일 경로 4. PathParseIconLocation 등 10개 함수 int PathParseIconLocation( LPTSTR pszIconFile ); pszIconFile에 파일 경로와 아이콘 인덱스가 포함된 경우 이를 적절하게 분리해 준다. pszIconFile에는 경로가, 아이콘 인덱스는 반환 값으로 나오게 되며, pszIconFile은 "경로, icon index" 형식이어야 한다. BOOL PathQuoteSpaces( LPTSTR lpsz ); lpsz에서 공백이 발견되면 lpsz를 큰 따옴표(")로 묶어준다. 공백이 없다면 아무 일도 하지 않고 FALSE가 반환된다. BOOL PathRelativePathTo(LPTSTR pszPath, LPCTSTR pszFrom..
[MFC강좌] 폴더 파일 경로 3. PathIsRoot 등 10개 함수 BOOL PathIsRoot( LPCTSTR pPath ); 경로가 루트 폴더(드라이브 바로 밑)인지 검사한다. PathIsRoot("c:\") = TRUEPathIsRoot("c:\windows") = FALSE BOOL PathIsSameRoot( LPCTSTR pszPath1, LPCTSTR pszPath2 ); pszPath1과 pszPath2가 같은 드라이브(루트 폴더)에 있는지 검사한다. PathIsSameRoot( "c:\test1\temp1.txt", "c:\test2\temp2.txt" ) = TRUE BOOL PathIsSystemFolder( LPCTSTR pszPath, DWORD dwAttrb ); 제시된 경로..