单实例运行tz

(引用了 Microsoft.VisualBasic.ApplicationServices)
SingleInstanceApplicationWrapper.cs
    
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;
 
namespace Highflyer
{
    /// <summary>
    /// 单实例应用程序封装类
    /// </summary>
    public class SingleInstanceApplicationWrapper : WindowsFormsApplicationBase
    {
        private readonly Form mainForm;
 
        public SingleInstanceApplicationWrapper(Form form)
        {
            mainForm = form;
#if DEBUG
            this.IsSingleInstance = false;
#endif
#if RELEASE
            this.IsSingleInstance = true;
#endif
        }
 
        protected override bool OnStartup(StartupEventArgs e)
        {
            Application.Run(mainForm);
            return false;
        }
 
        protected override void OnStartupNextInstance(StartupNextInstanceEventArgs e)
        {
            // 这里可以把本次使用的参数传给之前的实例,本人在一个WPF 屏幕键盘项目里传送了键盘显示方式(数字、英文、手写)参数
            //e.BringToForeground = true;
            //if (e.CommandLine.Count > 0)
            //{
            //  app.DealArgs(e.CommandLine.ToArray());
            //}
        }
    }
}


Program.cs

    
using System;
using System.Windows.Forms;
using Highflyer;
 
namespace Eparcar.ParkLocal.GateBoxClient
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
 
            MainForm mainForm = new MainForm();
            SingleInstanceApplicationWrapper wrapper = new SingleInstanceApplicationWrapper(mainForm);
            wrapper.Run(args);
        }
    }
}

原文地址:https://www.cnblogs.com/zeroone/p/3172970.html