基於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...