캔버스에 1 초마다 무언가를 그려 봅니다. 그런 다음 스레드를 생성하여 1 초 후에 수면을 그리는 메서드를 호출합니다. 문제는 Canvas 객체를 호출하여 호출하는 것입니다. 프로그램이 오류 메시지를 표시합니다.WPF : 스레드를 사용하여 캔버스에 무언가를 그리는 데 문제가 있습니다.
다른 스레드가이 스레드를 소유하고 있기 때문에 호출 스레드가이 개체에 액세스 할 수 없습니다.
코드
private void drawTimeTick() {
...
Thread iThread = new Thread(new ThreadStart(tickThread));
iThread.Start();
}
private void tickThread(){
try
{
Thread.Sleep(1000);
...
Canvas.SetLeft(tick, 700);
Canvas.SetTop(tick, 30);
}catch(Exception ex){
MessageBox.Show("Exception tickThread : "+ex.Message);
}
}
어떻게 그릴 스레드에서 캔버스에 액세스하려면?
threading보다 WPF를 사용하여 wayyyyy 더 좋은 방법이 있습니다. 그래야만 캔버스에있는 Dispatcher를 사용할 수 있습니다. – Pierreten
http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.invoke.aspx – Pierreten
@Pierreten : 대답은 받아 들일 수 있고 투표 할 수 있습니다. – Jens