当使用完一个对象后,是使用using指令还是dispose指令更好呢?
using(FileStream fileStream = new FileStream(
"logs/myapp.log",
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
using(StreamReader streamReader = new StreamReader(fileStream))
{
this.textBoxLogs.Text = streamReader.ReadToEnd();
}
}
另一方面,当我处理System.Net.Mail时,我被告知需要Dispose()对象以释放任何残留的锁定。
是否有任何一致性的指导?如何确定在特定情况下对于给定对象什么更为合适?
StreamReader
被释放时,它会同时释放其基础流。在您的示例代码中,如果您在streamReader
的using
块结束之前,但在fileStream
的using
块结束之前使用fileStream
,将会抛出一个ObjectDisposedException
异常。 - Mashmagar