国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
    主站蜘蛛池模板: 宁津县| 奎屯市| 溧阳市| 包头市| 共和县| 盐边县| 团风县| 加查县| 桦甸市| 牡丹江市| 南靖县| 连江县| 浪卡子县| 涿州市| 西吉县| 沁水县| 革吉县| 青川县| 吉林省| 和龙市| 南汇区| 潮安县| 南平市| 陵水| 沙田区| 伊通| 彭山县| 厦门市| 信丰县| 卢湾区| 大厂| 唐山市| 都匀市| 子洲县| 湖州市| 榆中县| 尼玛县| 宜城市| 蓬溪县| 鄂伦春自治旗| 吉木萨尔县|