【问题标题】:How to check already running exe in c#.net?如何在 c#.net 中检查已经运行的 exe?
【发布时间】:2010-02-02 07:08:57
【问题描述】:

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

【问题讨论】:

标签: .net exe


【解决方案1】:

您应该使用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");
    }
}

【讨论】:

  • 我已经浏览了互斥锁的代码。但它给了我公共覆盖无效处置(布尔处置)的错误;没有找到合适的方法来处理..这是在初始化组件时发生的..所以我已经评论了那部分..但我面临的主要错误是在设计视图部分设计者无法处理第 26 行的代码:抛出新的 NotImplementedException() ; “InitializeComponent”方法中的代码由设计者生成,不应手动修改。请删除所有更改并尝试再次打开设计器。我无法查看 form.cs[design] 请帮帮我!
【解决方案2】:

您可以使用命名为Mutex

命名系统互斥体可见 在整个操作系统中,以及 可用于同步 过程的活动。你可以 创建一个 Mutex 对象,它表示 通过使用一个命名系统互斥锁 接受名称的构造函数。

【讨论】:

  • 感谢您的回答.. 但它给了我重新构建设计视图的错误,它向我显示了设计视图上的错误
  • 我已经浏览了互斥锁的代码。但它给了我公共覆盖无效处置(布尔处置)的错误;没有找到合适的方法来处理..这是在初始化组件时发生的..所以我已经评论了那部分..但我面临的主要错误是在设计视图部分设计者无法处理第 26 行的代码:抛出新的 NotImplementedException() ; “InitializeComponent”方法中的代码由设计者生成,不应手动修改。请删除所有更改并尝试再次打开设计器。我无法查看 form.cs[design] 请帮帮我!
【解决方案3】:
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多