我有一个服务,它创建一个带有循环的线程,该循环应该一直运行到互斥锁由另一个进程发出信号为止。我的服务代码中有以下内容
private readonly Mutex _applicationRunning = new Mutex(false, @"Global\HsteMaintenanceRunning");
protected override void OnStart(string[] args)
{
new Thread(x => StartRunningThread()).Start();
}
internal void StartRunningThread()
{
while (_applicationRunning.WaitOne(1000))
{
FileTidyUp.DeleteExpiredFile();
_applicationRunning.ReleaseMutex();
Thread.Sleep(1000);
}
}
现在我有一个控制台应用程序,它应该声明互斥锁并强制退出 while 循环
var applicationRunning = Mutex.OpenExisting(@"Global\HsteMaintenanceRunning");
if (applicationRunning.WaitOne(15000))
{
Console.Write("Stopping");
applicationRunning.ReleaseMutex();
Thread.Sleep(10000);
}
当控制台应用程序尝试打开互斥体时,我收到错误“由于放弃的互斥体导致等待已完成”。这里有什么问题?