Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不断检查进程是否正在运行C#_C#_Timer - Fatal编程技术网

不断检查进程是否正在运行C#

不断检查进程是否正在运行C#,c#,timer,C#,Timer,我想通过如下方式查找进程的名称来确定进程是否已打开: Process[] proc = Process.GetProcessesByName("process name"); if (proc.Length != 0) { proccess_running = true; } else { process_running = false; } if (process_running == true) { statusBar1.Text = "Process is run

我想通过如下方式查找进程的名称来确定进程是否已打开:

Process[] proc = Process.GetProcessesByName("process name");
if (proc.Length != 0)
{
    proccess_running = true;
}
else
{
    process_running = false;
}
if (process_running == true)
{
    statusBar1.Text = "Process is running";
}
else
{
    statusBar1.Text = "Process is not running";
}
然后在状态栏中向用户显示结果,如下所示:

Process[] proc = Process.GetProcessesByName("process name");
if (proc.Length != 0)
{
    proccess_running = true;
}
else
{
    process_running = false;
}
if (process_running == true)
{
    statusBar1.Text = "Process is running";
}
else
{
    statusBar1.Text = "Process is not running";
}
我试着把上面的内容放在一个计时器中,它给出了正确的结果,只是每次计时器滴答作响时文本都会闪烁


只有当bool(正在运行的进程)发生更改而不是计时器计时时,才有办法设置状态栏的文本吗?

是否在窗体上启用了双缓冲?跳出框框思考。很好:)或者保持bool状态,每次都检查一下……很棒的解决方案!工作完全符合预期。@MitchWheat当然,保持
bool
会更快,但我认为这在我们的情况下并不重要,我想要一个更短的代码。(毕竟,我必须键入:-)。此外,保存的
bool
可能会使逻辑更加复杂。例如,在开始时-它应该是
false
还是
true
?“例如,在开始时-它应该是false还是true”-它应该以与标签完全相同的方式进行计算,并将其设置为false,然后再检查它是否运行100%正确。@Mitchheat我的意思是如果我们依赖条件
旧进程运行!=正在运行的进程
要显示文本,我们需要做一个技巧,第一次这样做。另一种方法是分割初始化和更新,但这有点麻烦。但无论如何,我想我们谈论的或多或少是同一件事。
var text = process_running ? "Process is running" : "Process is not running";
if (statusBar1.Text != text)
    statusBar1.Text = text;