zoukankan      html  css  js  c++  java
  • 通过 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase 实现 WPF 单例启动

    WPF 单例启动的例子,记一下。

    参考 WPF Single Instance workaround

    关键代码:

    namespace 你的命名空间
    {
        public class Startup
        {
            [STAThread]
            public static void Main(string[] args)
            {
                SingleInstanceApplicationWrapper wrapper = new SingleInstanceApplicationWrapper();
                wrapper.Run(args);
            }
        } 
    
        public class SingleInstanceApplicationWrapper :
            Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
        {
            private App app; // 这才是真正的WPF Application 
    
            public SingleInstanceApplicationWrapper()
            {
                this.IsSingleInstance = true;
            } 
    
            // 第一次打开调这个方法
            protected override bool OnStartup(
                Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e)
            {
                app = new App();
                app.Run(); 
    
                return false;
            } 
    
            // 再次打开调这个方法
            protected override void OnStartupNextInstance(
                Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs e)
            {
                // 当用户试图再次打开这个程序的时候
                MessageBox.Show("您正在运行该程序");
            }
        } 
    
        /// <summary>
        /// Interaction logic for App.xaml
        /// </summary>
        public partial class App : Application
        {
        }
    }

     OnStartupNextInstance 的方法中,可以获取第一个实例的主窗体,进行参数传递。

  • 相关阅读:
    s
    qq
    qqq
    q
    qq
    http请求报文
    qq
    q
    qqq
    java对象-String的用法
  • 原文地址:https://www.cnblogs.com/xiaokang088/p/2572918.html
Copyright © 2011-2022 走看看