我正在使用System.Timers.Timer
检查某个过程是否在1000ms的间隔上运行,如果是的,则将其输出在字符串上,例如:
System.Timers.Timer bTimer = new System.Timers.Timer();
bTimer.Elapsed += new ElapsedEventHandler(ChangeText);
bTimer.Interval = 1000;
bTimer.Enabled = true;
private void ChangeText(object source, ElapsedEventArgs e)
{
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains("notepad"))
{
lblText.Text = "Notepad is running.";
}
else
{
lblText.Text = "Notepad is not running.";
}
}
}
现在,我想知道,没有计时器有更有效的方法吗?例如,可以监视运行过程而不必每秒读取内存的内容?
var process = Process.GetProcessesByName("notepad").FirstOrDefault();
if (process == null)
{
MessageBox.Show("process is not running");
}
else
{
process.EnableRaisingEvents = true;
process.Exited += (sender, args) =>
{
MessageBox.Show("process exited");
};
}