国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

利用Visual C#實現(xiàn)Windows管道技術

2024-07-21 02:29:56
字體:
來源:轉載
供稿:網(wǎng)友

  管道技術一般采用window api來實現(xiàn),最近我試著用c#來實現(xiàn)windows管道技術,發(fā)現(xiàn)c#本身方便的進程線程機制使工作變得簡單至極,隨手記錄一下,推薦給大家。

   首先,我們可以通過設置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();

   然后設置線程連續(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();

   為了不阻塞主線程,可以將整個過程放到一個另一個線程里就可以了

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南靖县| 安龙县| 临夏县| 铁力市| 阿合奇县| 尼玛县| 甘洛县| 青田县| 石林| 青海省| 山西省| 山阴县| 汝州市| 张北县| 公主岭市| 聊城市| 泰宁县| 建阳市| 织金县| 石城县| 健康| 当涂县| 磐安县| 景泰县| 博湖县| 英德市| 大冶市| 宁河县| 始兴县| 康乐县| 阿勒泰市| 武鸣县| 绥化市| 济阳县| 台江县| 阜新市| 中牟县| 桑日县| 延长县| 垣曲县| 西丰县|