2014-05-18 1 views
0

예를 들면. 나는 일부 타이머가 있고 내 창 생성자에서 그것을 초기화 해요.타이머 방법으로 이미지를 만드는 방법은 무엇입니까?

void CheckTimer_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    MessageBox.Show("FirstText"); 
    Image IMG = new Image(); 
    MessageBox.Show("SecondText"); 
} 

하는 이유는 첫 번째 메시지 박스 창을로드 : 그리고 이것은 내 CheckTimer_Elapsed 방법은

public MainWindow() 
{ 
    InitializeComponent(); 
    CheckTImer = new Timer(3000); 
    CheckTimer.Elapsed += CheckTimer_Elapsed; 
    CheckTimer.Start(); 
} 

입니까? 그러나 타이머가 아닌 함수라고하면 모두 정상입니다.

public MainWindow() 
{ 
    InitializeComponent(); 
    SomeFunc(); 
} 
void SomeFunc() 
{ 
    MessageBox.Show("FirstText"); 
    Image IMG = new Image(); 
    MessageBox.Show("SecondText"); 
} 

답변

0

나는 이것이 스레딩 문제라고 생각합니다.

타이머에서 호출되는 이벤트가 새 스레드에 있다는 것을 상기합니다. UI 스레드 (허용되지 않음)에없는 UI 작업을하려고합니다. 가장 간단한 방법은 Timer 대신 DispatcherTimer를 사용하는 것입니다. System.Windows.Threading에서 찾을 수 있습니다.

DispatcherTimer에서 호출되는 이벤트는 UI 스레드에서이

을하는 데 도움이

희망입니다

관련 문제