可能重複:
What happens if I don't close a System.Diagnostics.Process in my C# console app?使用過程中使用塊
由於System.Diagnostics.Process
繼承Component
它實現IDisposable
,我就應該總是創建一個using
塊Process
?
例如,這...:
using (var process = new Process())
{
process.StartInfo.FileName = "some process.exe";
process.Start();
process.WaitForExit();
}
...而不是這樣的:
var process = new Process
{
StartInfo = { FileName = "some process.exe" }
};
process.Start();
process.WaitForExit();
我問,因爲我已經很少見到Process
出現在using
塊;例如MSDN page的Process
不使用它。使用對象初始值設定項也有幫助。
如果我應該正在使用它,那麼我應該去「改造」它到我現有的代碼庫嗎?
如果沒有完成,會有什麼後果? (假設在每種情況下都正確調用WaitForExit()
)。
謝謝 - 沒有看到這個問題。我同意它是相似的,但我具體詢問Dispose()而不是Close()。 – 2011-05-02 14:02:08
但是接受的答案比這裏的其他任何更好......:P – rsenna 2011-05-02 14:18:28
「使用對象初始值設定項也有幫助。」即使使用'using'塊,您仍然可以使用對象初始值設定項。我知道這個問題已經很老了,但是我用.NET 2.0測試了這個問題,並且至少在很久以前它就可以正常工作。 – 2016-08-28 16:11:57