利用Visual C#實現(xiàn)Windows管道技術(shù)
2006/11/15 9:36:23
管道技術(shù)一般采用Window API來實現(xiàn),最近我試著用C#來實現(xiàn)Windows管道技術(shù),發(fā)現(xiàn)C#本身方便的進(jìn)程線程機制使工作變得簡單至極,隨手記錄一下,推薦給大家。

   首先,我們可以通過設(shè)置Process類,獲取輸出接口,代碼如下:

Process proc = new Process();
proc .StartInfo.FileName = strScript;
proc .StartInfo.WorkingDirectory = strDirectory;
proc .StartInfo.CreateNoWindow = true;
proc .StartInfo.UseShellExecute = false;
proc .StartInfo.RedirectStandardOutput = true;
proc .Start();
   然后設(shè)置線程連續(xù)讀取輸出的字符串:

eventOutput = new AutoResetEvent(false);
AutoResetEvent[] events = new AutoResetEvent[1];
events[0] = m_eventOutput;

m_threadOutput = new Thread( new ThreadStart( DisplayOutput ) );
m_threadOutput.Start();
WaitHandle.WaitAll( events );
   線程函數(shù)如下:

private void DisplayOutput()
{
  while ( m_procScript != null && !m_procScript.HasExited )
  {
   string strLine = null;
   while ( ( strLine = m_procScript.StandardOutput.ReadLine() ) != null)
   {
    m_txtOutput.AppendText( strLine + "\r\n" );
    m_txtOutput.SelectionStart = m_txtOutput.Text.Length;
    m_txtOutput.ScrollToCaret();
   }
   Thread.Sleep( 100 );
  }
  m_eventOutput.Set();
}
   這里要注意的是,使用以下語句使TextBox顯示的總是最新添加的,而AppendText而不使用+=,是因為+=會造成整個TextBox的回顯使得整個顯示區(qū)域閃爍

m_txtOutput.AppendText( strLine + "\r\n" );
m_txtOutput.SelectionStart = m_txtOutput.Text.Length;
m_txtOutput.ScrollToCaret();
   為了不阻塞主線程,可以將整個過程放到一個另一個線程里就可以了

返回列表
返回首頁 主站蜘蛛池模板: 亚洲综合色婷婷在线观看| 日本韩国中文字幕| 口国产成人高清在线播放| 精品一区二区三区色花堂| 图片区另类小说| 一个人看的毛片| 新梅金瓶2之爱奴国语| 久久综合色婷婷| 欧美日韩国产va另类| 人人色在线视频播放| 精品无码久久久久久国产| 国产乱子伦精品视频| 久久综合久久鬼| 国产精品爆乳奶水无码视频| www.日本在线视频| 欧美va天堂在线电影| 亚洲综合精品香蕉久久网| 精品国产成人亚洲午夜福利| 国产一级一片免费播放i| 黄色网址免费大全| 国产精品99精品久久免费| 91福利视频免费| 天堂8在线天堂资源8| ww在线观视频免费观看w| 成人无码Av片在线观看| 久久er这里只有精品| 日韩AV无码一区二区三区不卡毛片| 亚洲三级中文字幕| 精品国产v无码大片在线看| 国产一级特黄高清在线大片| 国产精品入口在线看麻豆| 国产精品亚洲欧美大片在线看 | 亚洲综合激情六月婷婷在线观看| 精品久久伦理中文字幕| 台湾三级香港三级经典三在线| 色网站在线免费观看| 国产凌凌漆国语| 香蕉成人伊视频在线观看| 国产日韩av在线播放| 亚洲第一永久色| 国产精品一区二区无线|