我想确保只有一个应用程序实例运行...
我添加了互斥检查,但它导致64位系统出现问题。第二种方法是搜索进程表。通过重命名应用程序可以轻松地取消此检查。请告诉我如何确保只运行一个应用程序实例。
以下代码用于互斥锁
bool createdNew = true;
using (Mutex mutex = new Mutex(true, "MyApplicationName", out createdNew))
{
if (createdNew)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
这个问题在XP 64位后2或3分钟后会产生StackOverflowExcpetion并导致我的应用程序崩溃..我经过彻底的测试,结果发现使用互斥导致了这个问题
答案 0 :(得分:1)
互斥锁应该可以在64位系统上正常工作 请告诉我们您的代码。
或者,您可以使用Microsoft.VisualBasic.dll中的WindowsFormsApplicationBase
class(可以从C#中使用),它已经为您实现了这一点。
要使用它,请将IsSingleInstance
property设置为true
,将MainForm
属性设置为您的表单,然后拨打Run
。
答案 1 :(得分:1)
使用互斥是正确的方法,搜索进程表是错误的。如果互斥锁不适合您,则必须在代码中出现一些错误。你能发布有效的代码部分吗?