我知道这个问题可能有点愚蠢,但是对于C#和一般的编码我还是陌生的。
我最近制作了一个应用程序,但我希望限制它一次只能运行一次该实例,以便用户不能多次启动它。
我在堆栈溢出上找到了michalczerwinski的答案:

[STAThread]
static void Main()
{
    bool result;
    var mutex = new System.Threading.Mutex(true, "UniqueAppId", out result);

    if (!result)
    {
        MessageBox.Show("Another instance is already running.");
        return;
    }

    Application.Run(new Form1());

    GC.KeepAlive(mutex);                // mutex shouldn't be released - important line
}


谁能告诉我应该在哪里添加呢?我试过将其添加到Form1.cs中的所有位置,但无法正常工作。

最佳答案

static void Main()


是主要功能的名称。您应该将此添加到该特定功能的“ Program.cs”文件(标准名称)中(在该功能中的所有其他内容之前)。

释放资源是一个好习惯。因此,最好在函数的末尾添加mutex.Dispose();using (mutex) { }(不能同时使用,只能是这些选项之一)。

关于c# - C#中应用的单个实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34617940/

10-16 05:51