WinForm——程序单例运行

在某些特定的场合下,可能需要程序只运行一个实例,又称单例运行。

usingSystem.Windows.Forms;

usingMicrosoft.VisualBasic.ApplicationServices;

public class Program : WindowsFormsApplicationBase

    {

        frmMain main = null;

        /// <summary>

        /// 应用程序的主入口点。

        /// </summary>

        [STAThread]

        static void Main(string[] args)

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            //Application.Run(new frmMain());

            Program program = new Program();

            program.Run(args);

        }

        public Program()

        {

            this.IsSingleInstance = true;// 设置为单实例模式

        }

        /// <summary>

        /// 在应用程序启动时运行

        /// </summary>

        /// <param name="eventArgs">包含应用程序的命令行参数,并指示是否应取消应用程序启动。</param>

        /// <returns>指示应用程序是否应继续启动。</returns>

        protected override bool OnStartup(StartupEventArgs eventArgs)

        {

            main = new frmMain();

            Application.Run(main);

            return false;

        }

        /// <summary>

        /// 在单实例应用程序的后续实例启动时运行。

        /// </summary>

        /// <param name="eventArgs">包含后续应用程序实例的命令行参数,并且指示第一个应用程序实例是否应在退出异常处理程序后进入前台。</param>

        protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)

        {

            base.OnStartupNextInstance(eventArgs);

            main.Show();    //弹出第一个实例

        }

    }

posted @   M守护神  阅读(663)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示