如果进程正在运行,如何使timer2仅运行一次该函数?

时间:2013-03-11 21:59:46

标签: c#

在这个功能中,我正在检查游戏是否正在运行。

如果它正在运行我正在启动backgroundworker

然后在timer2中,我一直在检查进程是否正在运行,直到我退出游戏。

但是我不想让它继续检查它是否正在运行并一次又一次地启动backgroundworker ......

所以在一方面我希望timer2将一直运行该功能,直到我退出游戏另一方面我不希望它一直启动backgroundworker。 / p>

private void wichProcessIsrun()
{
    Process[] pname = Process.GetProcessesByName("BFBC2Game");
    if (pname.Length == 0)
    {
        Logger.Write("Battlefield Bad Company 2 Ended");
    }
    else
    {
        Logger.Write("Battlefield Bad Company 2 Started");
        backgroundWorker1.RunWorkerAsync();
    }
}

private void timer2_Tick(object sender, EventArgs e)
{
    wichProcessIsrun();
}

1 个答案:

答案 0 :(得分:2)

你应该有一个bool变量,你应该在开始这个过程时设置它,在检查过程中,只检查它的值,如果它是true而不是你不应该开始{{1} }}。 修改 您应该检查进程是否在结束之前已经启动。您应该将已启动的变量放在backgroundworker子句中,而不是仅在进程运行一段时间后才会记录。

if