간만에 WPF를 하는데.....

버튼으로 테스트해보니 프로그램이 잘 돌아가서 타이머를 하나 만들어서 주기적으로 실행하려고 돌렸는데...

에러가 퐝~

 

 

 

 

많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다.

 

혹은

"다른 스레드가 소유하고 있는 오브젝트에 현재 스레드가 접근할 수 없다"

(The calling thread cannot access this object because a different thread owns it.)

이런식의 오류가 나기도 합니다.

 

하도 오랜만에 WPF를 해서 감이 없네요;;

WPF나 실버라이트에서 타이머는 다른 쓰래드기때문에 UI쓰래드를 접근할때 에러가 납니다.

 

이럴때는 윈폼과 마찬가지로 인보크를 사용하여 작업을 해야 합니다.

(참고 : MSDN - Dispatcher.Invoke 메서드)

 

 간단하게 이포크를 사용할 수 있습니다.

 

Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
	{
		//사용할 메서드 및 동작
		ScrollGraph_001.AddStep(LastData);
	}));

참 쉽죠?

 

 




 

  1. Favicon of http://nightworm.tistory.com BlogIcon 매:지구름 2013.05.09 02:28 신고  Address  Edit/Delete  Reply

    포스팅 잘보고 갑니다. ^^

댓글 작성

이름
패스워드
홈페이지
비밀글

티스토리 툴바