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나 이런걸로 하면 되는데 방법이 없나보다..
'wpf' 카테고리의 다른 글
[wpf] FIle Share 파일이 열려있을때에도 딴쪽에서 읽을수 있게하기~ (0) | 2009.09.23 |
---|---|
[wpf] IIS제어 프로그램 소스 (0) | 2009.09.22 |
[wpf] WPF에서 IIS 제어하기 (1) | 2009.09.22 |
[wpf] INotifyPropertyChanged과 Observable Collection을 이용한 바인딩 샘플파일 (0) | 2009.09.21 |
[wpf] delegate 쓸때 파라미터 쓰는 메소드 만들기 (0) | 2009.09.21 |