如何判断用户每次启动应用程序时,是否已经运行了一个实例。如果未运行,则启动它,否则聚焦于当前实例。我已经尝试了单例应用程序的代码,但是它给出了许多错误,并且无法正常运行。您能否为我提供另一种替代方案?
您应该使用Mutex
类,就像这里所解释的那样:在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
正在忙碌,它可以具有多个实例。