av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

C#SingleInstance類淺析

本文是針對(duì)《基于.Net平臺(tái)應(yīng)用程序唯一運(yùn)行實(shí)例實(shí)現(xiàn)》的補(bǔ)充,文章給出功能實(shí)現(xiàn)代碼,其中C# SingleInstance類實(shí)現(xiàn)只允許一個(gè)實(shí)例運(yùn)行,Program為測(cè)試主程序入口。在代碼中標(biāo)識(shí)說明文字。

C# SingleInstance類代碼:

 
 
 
  1. usingSystem;
  2. usingSystem.IO;
  3. usingSystem.Diagnostics;
  4. usingSystem.Threading;
  5. usingSystem.Reflection;
  6. usingSystem.Runtime.InteropServices;
  7. namespaceZhengzuo.CSharpCode
  8. {
  9. ///
  10. ///只啟動(dòng)一個(gè)應(yīng)用程序?qū)嵗刂祁?
  11. ///
  12. publicstaticclassSingleInstance
  13. {
  14. privateconstintWS_SHOWNORMAL=1;
  15. [DllImport("User32.dll")]
  16. privatestaticexternboolShowWindowAsync(IntPtrhWnd,intcmdShow);
  17. [DllImport("User32.dll")]
  18. privatestaticexternboolSetForegroundWindow(IntPtrhWnd);
  19. //標(biāo)志文件名稱
  20. privatestaticstringrunFlagFullname=null;
  21. //聲明同步基元
  22. privatestaticMutexmutex=null;
  23. ///
  24. ///staticConstructor
  25. ///
  26. staticSingleInstance()
  27. {
  28. }
  29. #regionapi實(shí)現(xiàn)
  30. ///
  31. ///獲取應(yīng)用程序進(jìn)程實(shí)例,如果沒有匹配進(jìn)程,返回Null
  32. ///
  33. ///返回當(dāng)前Process實(shí)例
  34. publicstaticProcessGetRunningInstance()
  35. {
  36. ProcessProcesscurrentProcess=Process.GetCurrentProcess();//獲取當(dāng)前進(jìn)程
  37. //獲取當(dāng)前運(yùn)行程序完全限定名
  38. stringcurrentFileName=currentProcess.MainModule.FileName;
  39. //獲取進(jìn)程名為ProcessName的Process數(shù)組。
  40. Process[]processes=Process.GetProcessesByName(currentProcess.ProcessName);
  41. //遍歷有相同進(jìn)程名稱正在運(yùn)行的進(jìn)程
  42. foreach(Processprocessinprocesses)
  43. {
  44. if(process.MainModule.FileName==currentFileName)
  45. {
  46. if(process.Id!=currentProcess.Id)//根據(jù)進(jìn)程ID排除當(dāng)前進(jìn)程
  47. returnprocess;//返回已運(yùn)行的進(jìn)程實(shí)例
  48. }
  49. }
  50. returnnull;
  51. }
  52. ///
  53. ///獲取應(yīng)用程序句柄,設(shè)置應(yīng)用程序前臺(tái)運(yùn)行,并返回bool值
  54. ///
  55. publicstaticboolHandleRunningInstance(Processinstance)
  56. {
  57. //確保窗口沒有被最小化或最大化
  58. ShowWindowAsync(instance.MainWindowHandle,WS_SHOWNORMAL);
  59. //設(shè)置真實(shí)例程為foregroundwindow
  60. returnSetForegroundWindow(instance.MainWindowHandle);
  61. }
  62. ///
  63. ///獲取窗口句柄,設(shè)置應(yīng)用程序前臺(tái)運(yùn)行,并返回bool值,重載方法
  64. ///
  65. ///
  66. publicstaticboolHandleRunningInstance()
  67. {
  68. Processp=GetRunningInstance();
  69. if(p!=null)
  70. {
  71. HandleRunningInstance(p);
  72. returntrue;
  73. }
  74. returnfalse;
  75. }
  76. #endregion
  77. #regionMutex實(shí)現(xiàn)
  78. ///
  79. ///創(chuàng)建應(yīng)用程序進(jìn)程Mutex
  80. ///
  81. ///返回創(chuàng)建結(jié)果,true表示創(chuàng)建成功,false創(chuàng)建失敗。
  82. publicstaticboolCreateMutex()
  83. {
  84. returnCreateMutex(Assembly.GetEntryAssembly().FullName);
  85. }
  86. ///
  87. ///創(chuàng)建應(yīng)用程序進(jìn)程Mutex
  88. ///
  89. ///<paramnameparamname="name">Mutex名稱
  90. ///返回創(chuàng)建結(jié)果,true表示創(chuàng)建成功,false創(chuàng)建失敗。
  91. publicstaticboolCreateMutex(stringname)
  92. {
  93. boolresult=false;
  94. mutex=newMutex(true,name,outresult);
  95. returnresult;
  96. }
  97. ///
  98. ///釋放Mutex
  99. ///
  100. publicstaticvoidReleaseMutex()
  101. {
  102. if(mutex!=null)
  103. {
  104. mutex.Close();
  105. }
  106. }
  107. #endregion
  108. #region設(shè)置標(biāo)志實(shí)現(xiàn)
  109. ///
  110. ///初始化程序運(yùn)行標(biāo)志,如果設(shè)置成功,返回true,已經(jīng)設(shè)置返回false,設(shè)置失敗將拋出異常
  111. ///
  112. ///返回設(shè)置結(jié)果
  113. publicstaticboolInitRunFlag()
  114. {
  115. if(File.Exists(RunFlag))
  116. {
  117. returnfalse;
  118. }
  119. using(FileStreamfs=newFileStream(RunFlag,FileMode.Create))
  120. {
  121. }
  122. returntrue;
  123. }
  124. ///
  125. ///釋放初始化程序運(yùn)行標(biāo)志,如果釋放失敗將拋出異常
  126. ///
  127. publicstaticvoidDisposeRunFlag()
  128. {
  129. if(File.Exists(RunFlag))
  130. {
  131. File.Delete(RunFlag);
  132. }
  133. }

以上介紹C# SingleInstance類


當(dāng)前名稱:C#SingleInstance類淺析
本文鏈接:http://uogjgqi.cn/article/cdjsohc.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流