【发布时间】:2010-02-02 07:08:57
【问题描述】:
知道当用户每次启动应用程序时它会检查一个实例是否已经运行的过程是什么。如果它没有运行,它将启动它,否则它将专注于当前的。我已经尝试了单例应用程序的代码,但它给出了很多错误。它运行不正常。你能为我提供其他替代解决方案吗??
【问题讨论】:
-
Scott hanselman 在这里回答了:hanselman.com/blog/…
知道当用户每次启动应用程序时它会检查一个实例是否已经运行的过程是什么。如果它没有运行,它将启动它,否则它将专注于当前的。我已经尝试了单例应用程序的代码,但它给出了很多错误。它运行不正常。你能为我提供其他替代解决方案吗??
【问题讨论】:
您应该使用Mutex 类,如下所述:Best way to implement singleton in a console application C#?
编辑:我的代码中有这个:
class Program
{
public const string AppName = "...";
private static readonly Mutex mutex = new Mutex(true, Program.AppName);
public Program()
{
if (!mutex.WaitOne(TimeSpan.Zero, true))
throw new ApplicationException("Another instance already running");
}
}
【讨论】:
您可以使用命名为Mutex。
命名系统互斥体可见 在整个操作系统中,以及 可用于同步 过程的活动。你可以 创建一个 Mutex 对象,它表示 通过使用一个命名系统互斥锁 接受名称的构造函数。
【讨论】:
如果您使用后台工作程序,则不适用互斥锁。如果backgroundWorker 忙,它可以有多个实例。
【讨论】: