wpf
[wpf] Thread를 이용하여 상태 정보 업데이트 하기
동동(이재동)
2009. 9. 22. 17:08
Thread를 이용해서 상태 정보를 입력해보자 이걸한 이유는 상태값을 모니터링 해야하는데
마땅히 상태정보를 변경할때 알려주는 이벤트가 없기때문에 쓰레드를 이용해서 2초에 한번씩 계속 상태정보를 뿌려준다.
Thread ServiceStatusUpdateThread;
delegate void DelegateStatusUpdate();
private bool _active = true;
일단 머 쓰레드랑 ui변경을 위한 delegate와 계속 while문을 돌리기 위한 bool문을 선언한다.
private void StatusUpdate()
{
if (ServiceStatusUpdateThread == null)
{
ServiceStatusUpdateThread = new Thread(new ThreadStart (UpdateServiceStatus));
ServiceStatusUpdateThread.Start();
}
}
이렇게 클래스를 생성하고 쓰레드 시작을 한다.
여기서는 UpdateServiceStatus()메소드를 쓰레드로 돌렸다.
private void UpdateServiceStatus()
{
while (_active == true)
{
Dispatcher.Invoke(DispatcherPriority.Normal, new DelegateStatusUpdate(RefreshStatus));
Thread.Sleep(2000);
}
}
UpdateServiceStatus에는 UI에 업데이트할 Delegate 메소드 RefreshStatus()를 입력한다.
private void RefreshStatus()
{
xDataService.Text = "DataService : " + iisControl.GetStatusInfo("DataService");
xDataServiceForCast.Text = "DataServiceForCast : " + iisControl.GetStatusInfo("DataServiceForCast");
xDataServiceForManager.Text = "DataServiceForManager : " + iisControl.GetStatusInfo("DataServiceForManager");
}
자 이제 RefershStatus()에서 본격적으로 상태값을 textBlock에 쓴다 .즉 업데이트한다...
머 이런식으로 하면 되는데 개운하지는 않다.. class라면 notifychanged나 이런걸로 하면 되는데 방법이 없나보다..