注意:
不要把webservice的调用放在dispatcher的委托内,否则会阻挡线程。
public UserTreeItemForUserViewModel(UserTreeItemViewModel parent, CICSvr1.UserSummarization userSummarization)
: base(parent)
{
this.userSummarization = userSummarization;
Thread checkIfOnlineThread = new Thread(new ThreadStart(CheckIfOnlineThreadProc));
checkIfOnlineThread.Start();
}
private void CheckIfOnlineThreadProc()
{
while (true)
{
using (CICSvr1.CICSvr1Client client = new CICSvr1.CICSvr1Client())
{
userSummarization.IsOnline = client.CheckUserIsOnline(userSummarization.Id);
Application.Current.Dispatcher.Invoke(new Action(() =>
{
UpdateUserState();
}), DispatcherPriority.Normal);
}
Thread.Sleep(1000 * 6);
}
}