精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

描述C#調(diào)用外部進(jìn)程

開發(fā) 后端
本文介紹C#調(diào)用外部進(jìn)程這么簡單的一件事究竟會(huì)有哪些問題,也希望我寫的這個(gè)相對比較完整的類可以為軟件開發(fā)的同道們節(jié)約一些腦細(xì)胞,以便集中優(yōu)勢兵力解決那些真正高深復(fù)雜的軟件問題。

C#調(diào)用外部進(jìn)程的類,網(wǎng)上可以搜出很多來,為什么要再寫一遍,實(shí)在是因?yàn)樽罱鼜木W(wǎng)上拷貝了一個(gè)簡單的例程用到項(xiàng)目中,運(yùn)行有問題,后來研究了半天,才解決了這些問題。于是打算寫這么一篇博文,一來說說C#調(diào)用外部進(jìn)程這么簡單的一件事究竟會(huì)有哪些問題,二來也希望我寫的這個(gè)相對比較完整的類可以為軟件開發(fā)的同道們節(jié)約一些腦細(xì)胞,以便集中優(yōu)勢兵力解決那些真正高深復(fù)雜的軟件問題。

在開始正題之前,我們先來看一看網(wǎng)上比較常見的執(zhí)行外部進(jìn)程的函數(shù)

  1. privatestringRunCmd(stringcommand)  
  2. {  
  3. //例Process  
  4. Processp=newProcess();  
  5.  
  6. p.StartInfo.FileName="cmd.exe";//確定程序名  
  7. p.StartInfo.Arguments="/c"+command;//確定程式命令行  
  8. p.StartInfo.UseShellExecute=false;//Shell的使用  
  9. p.StartInfo.RedirectStandardInput=true;//重定向輸入  
  10. p.StartInfo.RedirectStandardOutput=true;//重定向輸出  
  11. p.StartInfo.RedirectStandardError=true;//重定向輸出錯(cuò)誤  
  12. p.StartInfo.CreateNoWindow=true;//設(shè)置置不顯示示窗口  
  13.  
  14. p.Start();//00  
  15.  
  16. //p.StandardInput.WriteLine(command);//也可以用這種方式輸入入要行的命令  
  17. //p.StandardInput.WriteLine("exit");//要得加上Exit要不然下一行程式  
  18.  
  19. returnp.StandardOutput.ReadToEnd();//輸出出流取得命令行結(jié)果果  
  20.  
  21. }  

這個(gè)方法應(yīng)該是比較常見的C#調(diào)用外部進(jìn)程的方法,我以前也一直是這樣調(diào)用外部進(jìn)程的,也沒有碰到過什么問題。但這次調(diào)用的外部進(jìn)程比較特殊,用這種方法調(diào)用就出現(xiàn)了兩個(gè)問題。

***個(gè)問題是這個(gè)被調(diào)用的外部進(jìn)程有時(shí)候會(huì)出現(xiàn)異常,出現(xiàn)異常后Windows會(huì)彈出錯(cuò)誤報(bào)告框,程序于是吊死在那里,必須手工干預(yù)。這個(gè)問題比較好解決,程序中設(shè)置一下注冊表搞定。

第二個(gè)問題是C#調(diào)用外部進(jìn)程(是一個(gè)控制臺進(jìn)程)后,程序會(huì)阻塞在p.StandardOutput.ReadToEnd();這一句,永遠(yuǎn)無法出來,被調(diào)用的那個(gè)控制臺程序也被吊死。但該控制臺進(jìn)程在CMD 中是可以正常執(zhí)行的。后來看來一些資料才發(fā)現(xiàn)原來原因是出在該控制臺程序控制臺輸出大量字符串,管道重定向后,調(diào)用程序沒有及時(shí)將管道中的輸出數(shù)據(jù)取出,結(jié)果導(dǎo)致管道被阻塞,程序吊死。在這里還有另外一個(gè)問題,雖然這次沒有遇到,但網(wǎng)上有其他人遇到,就是錯(cuò)誤信息管道不及時(shí)取出數(shù)據(jù),也會(huì)被阻塞,而且如果要同時(shí)取出兩個(gè)管道的數(shù)據(jù),必須要利用一個(gè)輔助線程才能實(shí)現(xiàn)。

問題講完了,下面給出這個(gè)類的完整代碼

  1. usingSystem;  
  2. usingSystem.Collections.Generic;  
  3. usingSystem.Text;  
  4. usingSystem.Runtime.InteropServices;  
  5. usingSystem.Threading;  
  6.  
  7. namespaceLaboratory.Process  
  8. {  
  9. classReadErrorThread  
  10. {  
  11. System.Threading.Threadm_Thread;  
  12. System.Diagnostics.Processm_Process;  
  13. Stringm_Error;  
  14. boolm_HasExisted;  
  15. objectm_LockObj=newobject();  
  16.  
  17. publicStringError  
  18. {  
  19. get  
  20. {  
  21. returnm_Error;  
  22. }  
  23. }  
  24.  
  25. publicboolHasExisted  
  26. {  
  27. get  
  28. {  
  29. lock(m_LockObj)  
  30. {  
  31. returnm_HasExisted;  
  32. }  
  33. }  
  34.  
  35. set  
  36. {  
  37. lock(m_LockObj)  
  38. {  
  39. m_HasExisted=value;  
  40. }  
  41. }  
  42. }  
  43.  
  44. privatevoidReadError()  
  45. {  
  46. StringBuilderstrError=newStringBuilder();  
  47. while(!m_Process.HasExited)  
  48. {  
  49. strError.Append(m_Process.StandardError.ReadLine());  
  50. }  
  51.  
  52. strError.Append(m_Process.StandardError.ReadToEnd());  
  53.  
  54. m_Error=strError.ToString();  
  55. HasExisted=true;  
  56. }  
  57.  
  58. publicReadErrorThread(System.Diagnostics.Processp)  
  59. {  
  60. HasExisted=false;  
  61. m_Error="";  
  62. m_Process=p;  
  63. m_Thread=newThread(newThreadStart(ReadError));  
  64. m_Thread.Start();  
  65. }  
  66.  
  67. }  
  68.  
  69. classRunProcess  
  70. {  
  71. privateStringm_Error;  
  72. privateStringm_Output;  
  73.  
  74. publicStringError  
  75. {  
  76. get  
  77. {  
  78. returnm_Error;  
  79. }  
  80. }  
  81.  
  82. publicStringOutput  
  83. {  
  84. get  
  85. {  
  86. returnm_Output;  
  87. }  
  88. }  
  89.  
  90. publicboolHasError  
  91. {  
  92. get  
  93. {  
  94. returnm_Error!=""&&m_Error!=null;  
  95. }  
  96. }  
  97.  
  98. publicvoidRun(StringfileName,Stringpara)  
  99. {  
  100. StringBuilderoutputStr=newStringBuilder();  
  101.  
  102. try  
  103. {  
  104. //disabletheerrorreportdialog.  
  105. //reference:http://www.devcow.com/blogs/adnrg/archive/2006/07/14/
    Disable-Error-Reporting-Dialog-for-your-application-with-the-registry.aspx  
  106. Microsoft.Win32.RegistryKeykey;  
  107. key=Microsoft.Win32.Registry.LocalMachine.OpenSubKey
    (@"software\microsoft\PCHealth\ErrorReporting\",true);  
  108. intdoReport=(int)key.GetValue("DoReport");  
  109.  
  110. if(doReport!=0)  
  111. {  
  112. key.SetValue("DoReport",0);  
  113. }  
  114.  
  115. intshowUI=(int)key.GetValue("ShowUI");  
  116. if(showUI!=0)  
  117. {  
  118. key.SetValue("ShowUI",0);  
  119. }  
  120. }  
  121. catch  
  122. {  
  123. }  
  124.  
  125.  
  126. m_Error="";  
  127. m_Output="";  
  128. try  
  129. {  
  130. System.Diagnostics.Processp=newSystem.Diagnostics.Process();  
  131.  
  132. p.StartInfo.FileName=fileName;  
  133. p.StartInfo.Arguments=para;  
  134. p.StartInfo.UseShellExecute=false;  
  135. p.StartInfo.RedirectStandardInput=true;  
  136. p.StartInfo.RedirectStandardOutput=true;  
  137. p.StartInfo.RedirectStandardError=true;  
  138. p.StartInfo.CreateNoWindow=true;  
  139.  
  140. p.Start();  
  141.  
  142. ReadErrorThreadreadErrorThread=newReadErrorThread(p);  
  143.  
  144. while(!p.HasExited)  
  145. {  
  146. outputStr.Append(p.StandardOutput.ReadLine()+"\r\n");  
  147. }  
  148.  
  149. outputStr.Append(p.StandardOutput.ReadToEnd());  
  150.  
  151. while(!readErrorThread.HasExisted)  
  152. {  
  153. Thread.Sleep(1);  
  154. }  
  155.  
  156. m_Error=readErrorThread.Error;  
  157. m_Output=outputStr.ToString();  
  158. }  
  159. catch(Exceptione)  
  160. {  
  161. m_Error=e.Message;  
  162. }  
  163. }  
  164.  
  165. }  
  166. }  

【編輯推薦】

  1. 分析C#不安全代碼
  2. 淺析C#調(diào)用ImageAnimator
  3. C#連接Access、SQL Server數(shù)據(jù)庫
  4. 淺談C#固定的和活動(dòng)的變量
  5. 介紹C#中的值類型
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-08-07 17:19:50

C#調(diào)用外部進(jìn)程

2009-09-03 17:59:18

C#調(diào)用事件

2009-09-03 16:20:14

C#調(diào)用Windows

2009-08-13 17:04:09

C#語言C#程序

2009-08-03 16:45:02

C#異步Socket

2009-08-20 09:30:03

C#開發(fā)WinForm

2009-08-17 16:32:34

C# Anonymou

2009-08-26 17:49:36

C# readonly

2009-08-18 17:41:22

C# ListView

2009-08-03 18:08:39

C# ICloneab

2009-08-31 18:32:01

C# ListBoxE

2009-08-31 13:18:09

C# IWebMess

2009-08-19 10:09:21

C#和C++

2024-05-27 00:20:00

2024-08-13 08:25:16

C#外部程序方式

2009-08-20 16:45:03

C#哈希值

2009-08-12 18:28:09

C#事件處理程序

2009-09-07 13:02:52

Java和C#線程

2009-08-21 15:27:11

C# DataGrid

2009-09-03 16:55:58

C#引用類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

福利成人导航| 国产www视频| 国产一区二区三区四区| 欧美婷婷六月丁香综合色| 91香蕉视频网址| 成人毛片在线精品国产| 欧美一级二区| 不卡av电影在线观看| 国产极品一区二区| 成人一区视频| 亚洲成人av一区二区| 日韩精品久久一区| 精品人妻一区二区三区四区不卡 | 久久综合九色综合97婷婷女人| 国产精品成人在线| 国产亚洲小视频| 成人免费a**址| 亚洲激情视频在线观看| 亚洲无在线观看| 日本韩国欧美| 亚洲一区二区三区四区在线观看 | 国产在线视频91| 亚洲精品男人的天堂| 久久久综合色| 日韩精品在线播放| 午夜福利三级理论电影| 日日夜夜亚洲精品| 亚洲 小说区 图片区 都市| 国内精品麻豆美女在线播放视频| 欧美视频完全免费看| 青青青免费在线| av在线免费网站| 国产精品美女久久久久高潮| 久久久久久艹| 狠狠躁日日躁夜夜躁av| 国内外成人在线视频| 国产精品爱久久久久久久| 日韩黄色a级片| 一区二区三区四区电影| 这里只有精品丝袜| 四虎永久免费在线观看| 亚洲激情播播| 亚洲国产精品人人爽夜夜爽| 乳色吐息在线观看| 日本欧美韩国| 91高清在线观看| www黄色av| 成人影院网站| 色婷婷综合久久久| 欧美视频第一区| 国产精品迅雷| 色婷婷精品大视频在线蜜桃视频| 国产精品333| 玖玖在线播放| 日韩欧美中文字幕在线播放| 干日本少妇首页| 中文字幕色婷婷在线视频| 精品久久久久久久大神国产| 久久久久久久久久网| 91福利在线尤物| 精品欧美aⅴ在线网站| 91视频最新入口| 一个人看的www视频在线免费观看| 婷婷丁香久久五月婷婷| 国产乱子伦农村叉叉叉| 美女91在线看| 色猫猫国产区一区二在线视频| www.国产区| 日韩色性视频| 欧美一卡二卡在线| www.555国产精品免费| 麻豆精品99| 国产亚洲精品久久久久久牛牛| www亚洲色图| 女人色偷偷aa久久天堂| 久久久久久久久久国产精品| 国产手机在线视频| 久久激情一区| 成人h片在线播放免费网站| 国产视频一区二区三| 成人一级视频在线观看| 久久亚洲高清| 色开心亚洲综合| 一区二区三区色| 久久久999视频| 国产91精品在线| 欧美成人午夜电影| 欧美成人午夜精品免费| 91一区二区| 51精品在线观看| 中文字幕精品无码亚| 国产成人av网站| 清纯唯美一区二区三区| 成人免费看片| 日韩欧中文字幕| 久久久福利影院| 老汉色老汉首页av亚洲| 日韩中文在线中文网三级| 免费观看一级视频| 日韩极品在线观看| caoporen国产精品| 国产精品无码2021在线观看| 一区二区三区中文在线观看| 亚洲成熟丰满熟妇高潮xxxxx| 99久热在线精品视频观看| 亚洲精品wwww| 欧美日韩成人免费观看| 久久久久国产精品一区三寸| 91超碰rencao97精品| 欧美孕妇性xxxⅹ精品hd| 亚洲婷婷国产精品电影人久久| 国产精品后入内射日本在线观看| 91精品一区| 亚洲欧美中文日韩在线| 久久网一区二区| 久久国产精品区| 欧美久久久久久一卡四| 国产啊啊啊视频在线观看| 欧美日韩国产另类一区| 国产精品无码一区二区三区| 精品99视频| 91欧美激情另类亚洲| 国产三级视频在线看| 亚洲18色成人| 中文字幕久久久久久久| 欧美aaaaaaaaaaaa| 国产成人精品日本亚洲专区61 | 亚洲第一视频网| 免费成人深夜夜行网站| 日韩黄色免费电影| 久久精品日韩| 99色在线观看| 欧美www视频| 欧美一区二区三区爽爽爽| 麻豆国产精品官网| 先锋影音网一区| 欧美专区福利免费| 日韩电影网在线| 日本一区二区网站| 国产91丝袜在线观看| 永久免费网站视频在线观看| 91成人在线网站| 日日摸夜夜添一区| 中文字幕一区二区三区四区视频| 国产亚洲精品7777| 国产亚洲天堂网| 亚洲精品小区久久久久久| 97欧美精品一区二区三区| 亚洲精品一区二区三区四区| 一区二区高清视频在线观看| 亚洲av无一区二区三区久久| 在线国产一区二区| 1区1区3区4区产品乱码芒果精品| www在线观看播放免费视频日本| 在线观看91精品国产麻豆| 国产精品美女高潮无套| 男人的天堂亚洲一区| 亚洲欧洲免费无码| 亚洲精品成a人ⅴ香蕉片| 久久久精品影院| jlzzjlzzjlzz亚洲人| 一区二区三区在线不卡| 国产日韩视频一区| 夜久久久久久| 日本不卡在线播放| 欧美韩国日本| 久久91超碰青草是什么| 六月丁香综合网| 色婷婷综合久久久中文一区二区 | 人妻精品一区二区三区| 午夜一区二区三区视频| 性欧美13一14内谢| 免费欧美在线视频| 亚洲色图都市激情| 久久精品亚洲成在人线av网址| 欧美一区二区三区精品电影| 北岛玲一区二区三区| 51精品秘密在线观看| 久久黄色小视频| 91麻豆蜜桃一区二区三区| 午夜免费一区二区| 亚洲天堂一区二区三区四区| 国产伦视频一区二区三区| 成人性生活视频| 精品国产一区二区三区四区在线观看 | 国产高清久久久久| 国产97在线 | 亚洲| 成人在线免费小视频| av蓝导航精品导航| 韩漫成人漫画| 久久国产精品99国产精| 日本成人一区| 欧美一区二区高清| 中文字幕在线欧美| 亚洲男人的天堂av| 欧美多人猛交狂配| 国产成人亚洲综合a∨婷婷 | 久久久无码精品亚洲国产| 久久久久亚洲蜜桃| 日本女人黄色片| 久久青草久久| 日本三级中文字幕在线观看| 亚洲精华一区二区三区| 99久久99| 国产精品成人国产| 91成人精品网站| 国产欧美黑人| 亚洲石原莉奈一区二区在线观看| 精品人妻无码一区二区| 在线看日韩精品电影| 日本网站免费观看| 亚洲欧美日韩国产手机在线| 手机看片福利视频| 9久草视频在线视频精品| 亚洲黄色片免费| 日本在线播放一区二区三区| 免费av手机在线观看| 亚洲国产成人精品女人| 天天爽天天狠久久久| 色综合www| 国产98在线|日韩| 91精品福利观看| 国产精品视频网| 乡村艳史在线观看| 性欧美长视频免费观看不卡| 深夜国产在线播放| 久久精品中文字幕一区| av在线免费播放网站| 国产手机视频精品| 天天躁日日躁狠狠躁伊人| 日韩一区二区三区精品视频| 一道本在线视频| 欧美性大战久久久久久久蜜臀| 福利网址在线观看| 欧美日韩精品在线观看| 欧美福利视频一区二区| 午夜一区二区三区视频| 日韩av无码中文字幕| 亚洲国产精品久久一线不卡| 精品一区二区三区四| 一区二区日韩av| 欧美激情精品久久| 亚洲一区二区三区小说| 国产无码精品在线播放| 亚洲国产日韩一区二区| 国产无遮挡裸体免费视频| 亚洲二区视频在线| 国产黄色片视频| 同产精品九九九| 成年人免费高清视频| 狠狠躁18三区二区一区| 日本韩国欧美中文字幕| 色哟哟国产精品| 国产情侣免费视频| 欧美日韩激情一区二区| av加勒比在线| 精品88久久久久88久久久| 国产精品嫩草影院8vv8| av大片在线观看| 亚洲精品中文字| 国产片在线观看| 精品国产自在精品国产浪潮| 九七久久人人| 欧美高清无遮挡| 日韩欧美一中文字暮专区| 国产91色在线|免| 日韩一区二区三区免费视频| 国产伦精品免费视频| 成人亚洲精品| 国产精品一区二区欧美黑人喷潮水 | 天天综合天天做天天综合| 亚洲 欧美 中文字幕| 欧美日韩久久久一区| www.色亚洲| 日韩国产精品视频| 番号集在线观看| 美日韩精品免费视频| bl视频在线免费观看| 欧美综合在线观看| 久久爱.com| 国产精品xxxx| heyzo久久| 欧美另类videosbestsex日本| 99精品国产在热久久婷婷| 中文字幕国产传媒| 国产精品12区| 亚洲码无人客一区二区三区| 亚洲精品日韩专区silk| 黄色在线免费观看| 欧美肥妇毛茸茸| 日韩在线免费播放| 久久久黄色av| 丝袜美腿诱惑一区二区三区| 91在线国产电影| 亚洲制服一区| 乱熟女高潮一区二区在线| 日韩国产精品大片| 午夜剧场免费看| 亚洲欧洲精品一区二区精品久久久 | 精产国品一二三区| 久久一区二区三区国产精品| 亚洲成人生活片| 在线观看视频欧美| 男人天堂一区二区| 精品久久久999| 视频二区不卡| 极品日韩久久| 欧美在线日韩| 一本岛在线视频| 久久久噜噜噜久久人人看 | 麻豆视频在线免费观看| 欧洲美女免费图片一区| 99re热精品视频| 国产奶头好大揉着好爽视频| 久久中文字幕一区二区三区| 污污免费在线观看| 亚洲图片欧美激情| 国产黄色免费视频| 亚洲激情视频网| 日本高清成人vr专区| 成人国产亚洲精品a区天堂华泰| 无码日韩精品一区二区免费| avav在线播放| 国产主播一区二区| 日本高清黄色片| 欧美在线综合视频| 青青草在线免费视频| 欧美日本高清视频| 99精品女人在线观看免费视频 | 美足av综合网| 91久久久久久久久| 日韩欧美中字| 在线观看的毛片| 久久久夜色精品亚洲| 亚洲国产成人无码av在线| 亚洲第一中文字幕| segui88久久综合| 国产精品区一区二区三含羞草| 欧美成人日韩| 中文字幕在线视频一区二区| 亚洲欧美日韩国产综合| hs视频在线观看| 精品中文字幕乱| 成人搞黄视频| 国产自产在线视频| k8久久久一区二区三区| 日韩精品国产一区二区| 亚洲国产精品免费| 擼擼色在线看观看免费| 精品日韩电影| 久久国产高清| 亚洲理论片在线观看| 欧美色精品在线视频| 日韩av中文| 亚洲自拍av在线| 国产综合激情| aaaa黄色片| 色妹子一区二区| 日本高清在线观看wwwww色| 91精品免费视频| 在线观看国产精品入口| 亚洲少妇一区二区三区| 黑人巨大精品欧美一区二区| 狠狠v欧美ⅴ日韩v亚洲v大胸| 国产精品入口福利| 中文一区一区三区免费在线观看| 亚洲欧美激情一区二区三区| 午夜精品久久久久久久99水蜜桃| 神马亚洲视频| 国产精品视频精品| 欧美黄色免费| 免费看黄色aaaaaa 片| 欧美性受极品xxxx喷水| 成人短视频在线观看| 国产美女精品在线观看| 久久一区中文字幕| 国产精品国产三级国产传播| 欧美成人精品二区三区99精品| 欧美一级鲁丝片| 亚洲人成网站在线观看播放| 国产精品99久久久久久有的能看 | 亚洲羞羞网站| 久久99欧美| 免费成人你懂的| 久久免费在线观看视频| 亚洲欧美资源在线| 成人激情久久| 播放灌醉水嫩大学生国内精品| 国产精品色在线| 手机av在线免费观看| 国产精品视频一区二区三区四| 欧美久久一区| 变态另类ts人妖一区二区| 日韩色在线观看| 免费观看成人性生生活片| www国产免费| 国产日韩欧美高清在线| 欧洲成人一区二区三区| 成人福利视频在线观看| 免费亚洲一区|