【发布时间】:2014-06-24 21:10:54
【问题描述】:
所以我有以下代码:
...
private static void Main(string[] args)
{
string file=DateTime.Now.ToFileTime().ToString();
File.AppendAllText(file, "Mutex\r\n");
bool CreatedNew;
Mutex mutex=new Mutex(true, AppDomain.CurrentDomain.FriendlyName, out CreatedNew);
if(CreatedNew)
{
#if DEBUG
File.AppendAllText(file, "Launching in DEBUG mode\r\n");
#else
File.AppendAllText(file, "Launching in RELEASE mode\r\n");
#endif
//Program.Launch();
Program.ProcessArgsAndLaunch(args);
}
else
{
File.AppendAllText(file, "Handling dupe\r\n");
Program.HandleDuplicate();
}
}
...
我在这里和其他网站上查看了无数文章,但都没有运气。
基本上,代码会检查应用程序的运行实例,如果有,它会切换到正在运行的实例的主窗口。如果没有,它会启动应用程序。
在Debug 模式下,一切正常,当我将配置切换到Release 时,问题就开始了:应用程序总是启动(Mutex 似乎什么也没做)。
我添加了有条件编译的转储,显示应用程序在哪种模式下启动,并且输出会根据配置发生变化,但遗憾的是,应用程序的行为也是如此。
这可能是race condition,但我不确定。
如有需要,将发布更多代码。
谢谢。
【问题讨论】:
标签: c# debugging mutex release