呼叫控制台應用程式3種方式效率比較

2021-10-19 00:00:43 字數 2349 閱讀 7518

基於c#語言,呼叫cmd控制台,執行其他exe程式效率比較,分為3種方式:

stopwatch watch =

newstopwatch()

; watch.

start()

;string exepath =

;string result = qconsoletest.qcmdshell.

executecmdshell

(exepath,

"-guid"

,"qcj");

watch.

stop()

; console.

writeline

("同步:"

+ watch.elapsed.totalseconds)

; console.

writeline

(result)

; watch.

restart()

;string sb = qconsoletest.qcmdshell.

executecmdshellasync

(exepath,

"-guid"

,"2");

watch.

stop()

; console.

writeline

("非同步:"

+ watch.elapsed.totalseconds)

; console.

writeline

(sb)

; watch.

restart()

;string res = qconsoletest.qcmdshell.

executecmdshellhaswindow

(exepath,

true

,"-guid"

,"3");

watch.

stop()

; console.

writeline

("顯示視窗:"

+ watch.elapsed.totalseconds)

; console.

writeline

(res)

;

輸出結果:

可見,非同步呼叫最快,顯示視窗最慢,後台靜默呼叫可以獲取控制台exe程式本身控制台輸出的結果或者錯誤資訊,而顯示視窗方式會直接開啟exetestcsharp.exe的控制台視窗,測試的控制台consoletest並不能獲取被呼叫的控制台上輸出的資訊。

非同步呼叫時,可以在outputdatareceived事件中與主程式控制元件聯動。

private

static

stringbuilder sdata =

newstringbuilder()

;///

/// 非同步執行命令列程式

///

///

///

///

public

static

string

executecmdshellasync

(string cmdshellpath,

params

string

inputarguments)

; process.startinfo = startinfo;

//新增事件

process.outputdatareceived +

= outputdatareceivedhandler;

try process.

beginoutputreadline()

; process.

beginerrorreadline()

;// 使當前執行緒等待,直到關聯程序終止

process.

waitforexit()

;}catch

(exception exception)

finally

return sdata.

tostring()

.trimend()

;}//非同步資料接受響應事件

private

static

void

outputdatareceivedhandler

(object sender,

datareceivedeventargs e)

}catch

(exception ex)

}

ArcEngine控制台應用程式

wbaolong原文 arcengine控制台應用程式 控制台應用程式相比其他應用程式,更加簡單,簡化了許多冗餘,可以讓我們更加關注於本質的東西。現在讓我們看一看arcgis engine的控制台應用程式吧!一 首先是許可繫結 1 執行時環境的繫結 esri.arcgis.runtimemanage...

ArcEngine控制台應用程式

wbaolong原文 arcengine控制台應用程式 控制台應用程式相比其他應用程式,更加簡單,簡化了許多冗餘,可以讓我們更加關注於本質的東西。現在讓我們看一看arcgis engine的控制台應用程式吧!一 首先是許可繫結 1 執行時環境的繫結 esri.arcgis.runtimemanage...

ArcEngine控制台應用程式

wbaolong原文 arcengine控制台應用程式 控制台應用程式相比其他應用程式,更加簡單,簡化了許多冗餘,可以讓我們更加關注於本質的東西。現在讓我們看一看arcgis engine的控制台應用程式吧!一 首先是許可繫結 1 執行時環境的繫結 esri.arcgis.runtimemanage...