互斥体无法将正在运行的应用程序限制为一个

问题描述 投票:0回答:1

我正在编写一个程序来格式化和聚合数据,使其可用于电力自动化处理。然而,我刚刚注意到我的一个应用程序能够同时运行多次,即使我使用互斥体来抑制这种行为。

这是代码:

//Some code
string mutexName = "MutexName";
bool newC;
Mutex mutex = new(true, mutexName, out newC);
if (!newC)
{
    return;
}
//Some code

我正在使用Windows任务计划程序每天自动启动它以在崩溃时重新启动它。起初它运行良好并且没有引起任何问题。但从昨天开始,它突然开始忽略运行两次的应用程序。电脑充当服务器并不断运行。

提前致谢!

c# mutex windows-task-scheduler single-instance
1个回答
0
投票

好的,找到了一个方法。我正在保存应用程序的状态以在我必须构建的网站上显示它,所以现在我只需检查该状态并终止该任务(如果它具有已打开状态)。

这里是代码(有点长,因为它包含一个配置读取器,用于加载不同的文件路径,包含状态):

启动时:

ConfigReader configReader = new("filePath");
if (!checkTurnedOff(configReader))
{
    return;
}

检查关闭():

bool checkTurnedOff(ConfigReader configReader)
{
    if (configReader.GetFileData("running").Split('=')[3].Contains("false"))
    {
        return true;
    }
    return false;
}

获取文件数据():

public string GetFileData(string key)
{
    return File.ReadAllText(GetValue(key));
}
© www.soinside.com 2019 - 2024. All rights reserved.