自动更新视图
本文关键字:新视图 更新 | 更新日期: 2023-09-27 18:30:58
我有一个文本框,它告诉正在运行的应用程序的状态(比如记事本)。如果记事本正在运行,则文本框的文本正在运行,并且对于其他情况未运行。
public string ProcessStatus
{
get
{
IsProcessRunning("Notepad.exe")
return "Running";
return "Not Running";
}
}
现在这里的问题是视图在启动时只更新一次。那时,如果记事本正在运行,它可以正常工作。现在让我们假设我运行了我的应用程序,但记事本没有运行,然后 TextBox 说没有运行。现在我启动记事本,现在应用程序仍然说没有运行,因为应用程序没有更新视图。如果我调用文本框的属性更改通知事件,那么它会说正在运行。但我想要的是文本框自动更新。
我现在正在考虑的唯一解决方案是我启动一个不断更新ProcessStatus
的后台进程。但这是正确的方法吗?有没有更好的方法?类似于进程的DirectoryWatcher?
您可以使用System.Windows.Threading.DispatcherTimer
定期检查:
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(10000); // checks every 10 seconds
timer.Tick += Timer_Tick;
timer.Start();
...
private void Timer_Tick(object sender, EventArgs e)
{
// do your checks here
textbox.Text = ProcessStatus;
}
您可以从 MSDN 的 DispatcherTimer 类页找到有关DispatcherTimer
类的详细信息。
为什么不使用计时器类定期运行 ProcessStatus,您可以定义间隔。
关于另一个问题 当某些进程启动时,我会收到通知吗? 关于如何在进程(例如记事本.exe)启动时收到通知,有两个答案。两者都不理想也不简单,我可能会坚持像Sheridan和NSmeef建议的那样进行民意调查。