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

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

C#實現(xiàn)Window管道技術

2024-07-21 02:18:06
字體:
來源:轉載
供稿:網友
  • 本文來源于網頁設計愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。
  • 之前發(fā)了一篇使用window api來實現(xiàn)管道技術的文章,后來改用c#來實現(xiàn)相同的效果,發(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ā)表
    主站蜘蛛池模板: 闽侯县| 平和县| 易门县| 武城县| 吉木乃县| 齐河县| 蒙阴县| 苏尼特左旗| 田林县| 西乌| 麻城市| 武安市| 周至县| 腾冲县| 石嘴山市| 广昌县| 武鸣县| 班戈县| 吉木乃县| 东城区| 太原市| 浦城县| 新乡市| 贵溪市| 建始县| 凤山市| 从江县| 怀宁县| 富蕴县| 安阳县| 乃东县| 正宁县| 宁乡县| 大英县| 深水埗区| 临颍县| 靖安县| 尤溪县| 龙门县| 金山区| 高要市|