已发布的Winform程序 如何保证只启动一个客户端?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已发布的Winform程序 如何保证只启动一个客户端?相关的知识,希望对你有一定的参考价值。

各位大侠们:小弟写了一个winform程序、并生成了安装程序, 在电脑上安装之后,可以正常启动客户端。但是如果启动一个客户端之后,再次启动客户端程序,那么就会启动两个程序,如何避免这一点,使得在电脑上只能运行一个客户端程序? 就像lingoes一样,如果启动了Lingoes之后,再次点击启动程序,就会弹出刚才已运行的Lingoes主界面、而不是重新启动了一个客户端程序界面!
我的那个程序 如果启动两次的话 就会在右下角产生两个图标! 效果如图片中展示的那样。。

参考技术A c#只允许启动一个实例,需要重启程序的例子2010年01月13日 星期三 16:31 static class Program

public static System.Threading.Mutex Run;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()

bool noRun = false;
Run = new System.Threading.Mutex(true, "ab", out noRun);
//if (!isRunning())
if(noRun)

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
CsDAL.UserInfo ui = new CsDAL.UserInfo();
Login myLogin = new Login();
if (!Login.istrue)
return;
ui = myLogin.GetUI();
if (myLogin.ShowDialog() == DialogResult.OK)

string userOtherInfo = myLogin.GetUserOtherInfo(); //获取登录用户的 有效期,登录IP,最后登录时间
try

Application.Run(new SimResult(ref ui, userOtherInfo));
if (SimResult.isOthorLogin)

Run.ReleaseMutex();
Program.Run.Close();
Application.Restart();


catch


else

MessageBox.Show("程序已经运行,请勿重复启动!", "提示");

参考资料:http://hi.baidu.com/huangyuyu373/blog/item/0dbdefa8cb0695f71f17a242.html

参考技术B 您好,这个使用进程管理,在您的winform启动里,进行一下判断。

C# WinForm中如何让当前应用程序只允许启动一个实例

我们在WinForm开发中,很多情况下是需要只允许让用户运行一个实例,那么代码其实很简单。只需要修改Program.cs文件,代码如下

 static class Program
    {


        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            //Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Fm_Login());
            bool noRun;
            //判断是否已经有需要运行一个实例,如果系统没有,则运行一个
            using (System.Threading.Mutex m = new System.Threading.Mutex(true, Application.ProductName, out noRun))
            {
                if (noRun)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Form Login = new Fm_Login();
                    Login.ShowDialog();//显示登陆窗体  
                    if (Login.DialogResult == DialogResult.OK)
                    {
                        Application.Run(new Fm_main());
                    }//判断登陆成功时主进程显示主窗口  
                    else return;
                }
                else {
                    MessageBox.Show("目前已有一个程序在运行,请勿重复运行程序","提示");
                }
            }

        }
    }

 

以上是关于已发布的Winform程序 如何保证只启动一个客户端?的主要内容,如果未能解决你的问题,请参考以下文章

C# WinForm中如何让当前应用程序只允许启动一个实例

吉特仓库管理系统(开源)-如何在网页端启动WinForm 程序

吉特仓库管理系统(开源)-如何在网页端启动WinForm 程序

winform客户端无法启动连接

WINFORM 启动器(并行exe)设计方案

WinForm程序,实现只启动一个实例