公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#開發單實例應用程序并響應后續進程啟動參數

freeflydom
2024年9月7日 21:57 本文熱度 1408

C#默認的WinForm模板是不支持設置單實例的,也沒有隔壁大哥VB.NET那樣有個“生成單個實例應用程序”的勾選選項(VB某些時候要比C#更方便)。

實現單實例可以有多種方法:

  • 檢測同名進程:Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName),如果集合的Length > 1那就表明已有同名進程了,如果有需要還可以進一步檢查該進程的路徑;

  • 命名互斥鎖:Mutex,網上介紹的很多都是這種方法;

  • 鎖定文件:使用File.Create方法創建文件并在程序退出時釋放,如果創建失敗則表明已經有實例在運行;

  • VB.NET方法:WindowsFormsApplicationBase,個人認為該方法最完美,可以接收后續進程的啟動參數,還可以彈出前序進程的主窗體。

WindowsFormsApplicationBase是一個Microsoft.VisualBasic.ApplicationServices命名空間下的類,是微軟為VB.NET實現應用程序啟動控制的類,其內部是以命名管道通信來實現的。既然是同一個爹的東西,C#拿過來用毫無違和感。Microsoft.VisualBasic和Microsoft.CSharp一樣,都是.NET Framework中的一部分,不用擔心會缺少運行環境。

WindowsFormsApplicationBase類的一些常用屬性和方法:

  • 屬性IsSingleInstance:設置當前進程是否為單實例進程,在構造方法中設置,如果是后續進程且為值true,構造方法結束后會給前序進程發送啟動參數,然后就退出進程了,不會執行到下面的OnStartup;

  • 方法OnStartup:首次啟動后運行,返回false就會退出進程,后續進程永遠不會運行到該方法;

  • 方法OnStartupNextInstance:后續進程啟動后的重寫方法,前序進程會接收到后續進程的啟動參數,彈出主窗體等;

  • 方法OnCreateMainForm:創建主窗體的重寫方法,必須指定主窗體。

創建一個單實例應用程序并響應后續進程參數的大概過程:

  • 創建一個項目名稱為“SingleInstanceSample”的Windows窗體項目;

  • 添加引用“Microsoft.VisualBasic”;

  • 重命名“Form1”為“MainForm”;

  • 添加類“ApplicationBase.cs”,繼承自“WindowsFormsApplicationBase”;

  • 修改“Program.cs”,從“ApplicationBase”啟動。

各個類的代碼如下:

Program.cs 

using System;

using System.Windows.Forms;


namespace SingleInstanceSample

{

    internal static class Program

    {

        [STAThread]

        static void Main(string[] args)

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);


            var app = new ApplicationBase();

            app.Run(args);

        }

    }

}

ApplicationBase.cs

using Microsoft.VisualBasic.ApplicationServices;

using System.IO;


namespace SingleInstanceSample

{

    internal class ApplicationBase : WindowsFormsApplicationBase

    {

        public ApplicationBase() : base(AuthenticationMode.Windows)

        {

            //指示進程為單進程:IsSingleInstance

            base.IsSingleInstance = true;

            base.SaveMySettingsOnExit = true;

            base.ShutdownStyle = ShutdownMode.AfterMainFormCloses;

        }


        /// <summary>

        /// 首次啟動后的重寫方法,返回false就會退出進程,

        /// 比如可以顯示登錄窗體,登錄失敗返回false就不會運行到OnCreateMainForm

        /// </summary>

        protected override bool OnStartup(StartupEventArgs eventArgs)

        {

             base.OnStartup(eventArgs);


            //處理當前進程的啟動參數


            return true;

        }


        /// <summary>

        /// 后續進程啟動后的重寫方法

        /// </summary>

        protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)

        {

            base.OnStartupNextInstance(eventArgs);


            //處理后續進程的啟動參數

        }


        /// <summary>

        /// 指定主窗體,

        /// 除非OnStartup返回false,否則必須指定主窗體

        /// </summary>

        protected override void OnCreateMainForm()

        {

            base.MainForm = new MainForm();

        }

    }

}

轉自https://www.cnblogs.com/yiluxiangdong/p/18288392 作者一路向東


該文章在 2024/9/9 9:58:56 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产高清无码日韩一区擁有海量影 | 91人妻无码精品蜜桃 | 精品21国产成人综合网在线 | 国产精品视频观看 | 91高清视频一二三区 | 国产女同一区二区三区五区 | 国产操女人 | 国产高清国产精品国产k | 国产精品福利区一区二区三区四 | 国产日韩a视频在线播放视频色欲 | 国产精品亚洲色婷婷99久久精品 | 国产一级无码免费不卡 | 国产一本大道视频在线观看 | 丰满白嫩尤物一区二区 | 精品国产一区二区三区精品日韩 | 精品视频一区二区三区2025 | 国产一区高清视频在线观看 | 97无码国产精品 | 国产91无码网站在线观看 | 99精品国产免费久久 | 国产精品一区二区免费 | 国产漫画无码作爱视频免费 | 69视频成人精 | 99久久精品免费看国产漫画 | 99精品一区二区三区无码吞精 | 成人三级视频在线观看一区二区 | 2025夜夜乳狠狠乳狠狠爱 | 国产日韩精品欧美一区 | 精品精品国产自在97香蕉蜜芽 | 国产精品多人p群无码 | 国产成人啪精品视频免费软件 | 国产美女精品视频 | 国产成人8x视频网站 | 国产亚洲制服无码中文 | 国精产品一品二品国精品69xx | 精品亚洲zw喷水在线播放 | 国产福利91精品一区 | 国产精品无码天天爽视频 | 18禁黄网站免费 | 国产精品青青 | 国产91精品白浆无码流出久久 |