且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

小文——在C# WinForm中如何使当前应用程序只允许启动一个实例

更新时间:2022-06-17 22:09:10

我们在创建C# WinForm应用程序时,有时需要限制用户在同一时间只允许启动一个应用程序实例,例如安装程序包、系统扫描工具等等。当应用程序的一个实例已经处于运行状态时,如果用户企图再启动一个实例,则给用户一个提示并终止该实例。

    这个其实很简单!我们知道,WinForm应用程序都有一个程序运行时的入口点,这点与WebForm应用程序不同,后者需要在任意一个可访问的Page中设置允许用户访问的权限,而WinForm应用程序只需要处理好程序的入口点就可以了。因此我们需要在Program class的Main函数中进行判断和处理。代码如下: 

小文——在C# WinForm中如何使当前应用程序只允许启动一个实例
[STAThread]
static void Main()
{
    
bool createNew;
    
using (System.Threading.Mutex m = new System.Threading.Mutex(true, Application.ProductName, out createNew))
    {
        
if (createNew)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(
false);
            Application.Run(
new Form1());
        }
        
else
        {
            MessageBox.Show(
"Only one instance of this application is allowed!");
        }
    }
}
小文——在C# WinForm中如何使当前应用程序只允许启动一个实例

 

    主要使用了Sytem.Theading.Mutex对象,该对象用于解决多线程操作中的互斥问题,有关它的详细介绍读者可以参考MSDN。

http://msdn.microsoft.com/zh-cn/library/bwe34f1k(VS.80).aspx



本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/archive/2009/05/05/1450083.html,如需转载请自行联系原作者