在WPF中创建单实例应用程序

创建单实例应用程序包装器

  1. 添加VisualBasic.dll引用

  1. 新建类SingleInstanceAppWrapper继承自WindowsFormsApplicationBase
using Microsoft.VisualBasic.ApplicationServices;

namespace 项目9 {
    class SingleInstanceAppWrapper :WindowsFormsApplicationBase{
        public SingleInstanceAppWrapper()
        {
            this.IsSingleInstance = true;
        }

        private WpfApp app;
        protected override bool OnStartup(StartupEventArgs eventArgs)
        {
            base.OnStartup(eventArgs);
            app =new WpfApp();
            app.Run();
            return false;
        }

        protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
        {
            base.OnStartupNextInstance(eventArgs);
            app.ShowWindow();
        }
    }
}

3.在主程序调用

using System;

namespace 项目9 {
    class StartUp {
        [STAThread]
        public static void Main(string[] args)
        {
            //WpfApp app=new WpfApp();
            //app.Run();
            SingleInstanceAppWrapper wrapper=new SingleInstanceAppWrapper();
            wrapper.Run(args);
        }
    }
}

打开多个,但只有一个进程