.net4.0中wpf単例起動

1591 ワード

Microsoftを追加VisualBasicリファレンス、ヘッダリファレンス
using Microsoft.VisualBasic.ApplicationServices;
Appを開きます.xaml.csファイル、ファイルを次のように変更します.
class Program

    {

        [STAThread]

        static void Main(string[] args)

        {

            SingleInstanceApp a = new SingleInstanceApp();

            a.Run(args);

        }

    }



    /// <summary>

    /// App.xaml  

    /// </summary>

    public partial class App : System.Windows.Application

    {

        protected override void OnStartup(System.Windows.StartupEventArgs e)

        {

            base.OnStartup(e);

            InitializeComponent();

        }

    }



    public class SingleInstanceApp : WindowsFormsApplicationBase

    {

        App win = null;

        public SingleInstanceApp()

        {

            this.IsSingleInstance = true;

        }



        protected override bool OnStartup(Microsoft.VisualBasic.ApplicationServices.StartupEventArgs eventArgs)

        {

            win = new App();

            win.Run();

            return false;

        }



        protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)

        {

            foreach (System.Windows.Window _win in win.Windows)

            {

                if (_win.Visibility == System.Windows.Visibility.Visible)

                {

                    _win.Activate();

                }

            }

        }

    }


コンパイルすると、vsは2つのエントリ関数を通知し、Appにナビゲートします.g.csのmain関数、直接削除すればいい~~以上のコードは通用して、何も修正する必要はありません..もちろん、自分の個性的なニーズを書き込むには自分で変えます~~