我知道这个问题可能有点愚蠢,但是对于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/