【发布时间】:2013-01-14 18:51:37
【问题描述】:
我用一个表单编写了一个简单的 Windows 应用程序。它的目的是只在一个实例中运行。我使用互斥锁方法并在第二个实例尝试运行时抛出一条消息。现在我想更改此消息框,并且我只想在尝试触发第二个实例时将第一个实例置于顶部。我的代码目前是:
namespace WindowsFormsApplication2
{
static class Program
{
[STAThread]
static void Main()
{
bool mutexCreated = false;
System.Threading.Mutex mutex = new System.Threading.Mutex(true,@"Local\WindowsFormsApplication2.WindowsFormsApplication2.exe", out mutexCreated);
if(!mutexCreated )
{
if( MessageBox.Show("The application is already running.Hit the OK to exit", "",MessageBoxButtons.OK, MessageBoxIcon.Information ) != DialogResult.Cancel )
{
mutex.Close();
return;
}
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
【问题讨论】:
-
您可以尝试仅激活 Form1 吗?
-
嘿小丑。此举背后的要点是应用程序只能在一个实例中运行,但每当用户尝试触发另一个实例时,第一个实例表单会跳到顶部,而第二个实例会被取消。例如 - notepad++ 就是这样工作的,当尝试打开它两次时,预先打开的窗口不会打开另一个窗口,而是弹出到顶部。
标签: c#