My Name is Kay....

DIY , 먹방 , 개발 , 육아 , 여행 좋아합니다.
AdBlock 사용시 화면이 정상적으로 노출되지 않습니다.
포스팅 관련 문의 및 개발 문의는 Email : wkzkfmxksi@gmail.com

추가 포스팅이 이뤄지지 않는 블로그입니다. 문의는 wkzkfmxksi@gmail.com 으로 연락주세요.


MSDN 에서는..
- .NET Framework에서는 사용자가 스레드로부터 안전하지 않은 방식으로 컨트롤에 액세스할 경우 이를 감지할 수 있습니다.

디버거에서 응용 프로그램을 실행할 때 컨트롤을 만든 스레드가 아닌 스레드에서 해당 컨트롤을 호출하려고 하면 

"컨트롤 이름 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다."라는 

메시지와 함께 InvalidOperationException이 발생합니다.


멀티 스레드 사용시 스레드 자신이 생성하지 않은 컨트롤에 접근시 보안상의 이유로 안전하지 않다고 판단되어 나오는 에러 메시지.


해결하기 위해서는 


1. 안전한 방식의 컨트롤 액세스(아래 msdn Url )

2. Invoke 메서드를 사용

3. 해당 보안 기능을 비활성화 시키는 방법


내부 사용용도의 간단 툴이었기에 비활성화 시키는 방법만 남겨둡니다..


CheckForIllegalCrossThreadCalls = false;



Invoke 사용 및 상세 내용은 MSDN(http://msdn.microsoft.com/ko-kr/library/ms171728.aspx) 참고.

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
2 c# .Net 'Microsoft.ACE.OLEDB.12.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다. file kay 2014.11.06 6634
» c# .Net 크로스 스레드 작업이 잘못되었습니다. 'xxx' 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다. kay 2013.08.30 6056
Board Pagination Prev 1 Next
/ 1