3

知道当用户每次启动应用程序时它会检查实例是否已经在运行时的程序是什么。如果它没有运行,它将启动它,否则它将专注于当前的。我已经尝试了单例应用程序的代码,但它给出了很多错误。它运行不正常。你能为我提供其他替代解决方案吗?

4

4 回答 4

3

您应该使用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");
    }
}
于 2010-02-02T08:55:00.740 回答
1

您可以使用命名的Mutex.

命名系统互斥锁在整个操作系统中都是可见的,并且可以用来同步进程的活动。您可以使用接受名称的构造函数创建表示命名系统互斥体的互斥体对象。

于 2010-02-02T07:16:50.673 回答
1

单进程实例对象

在 C# 中创建单实例应用程序

于 2010-02-02T07:17:06.803 回答
0

如果您使用后台工作人员,则不适用互斥锁。如果backgroundWorker它很忙,它可以有多个实例。

于 2012-04-26T02:13:21.567 回答