这是我的代码:
string data = "...";
var stream = new StreamReader(data);
不调用Close()
方法可以吗?
是的,否则你会有内存泄漏。用 using 语句包裹你StreamReader
,这样你就不必担心清理它,例如
using (var reader = StreamReader(data))
{
...
}
你真的编译并运行你的代码了吗?
构造StreamReader(string)
函数将输入视为文件名!
除非这不是您的代码并且您的意思是 StringReader
,否则您的代码正在尝试流式传输 中指定的文件名的内容data
,这可能会抛出 a FileNotFoundException
,因为该文件可能不存在。如果是这样,您肯定需要调用Close
或将您的代码集成到一个using
语句中以释放文件句柄。
您可能还想查看有关 msdn 的本教程:http:
//msdn.microsoft.com/en-us/library/aa355056.aspx
它告诉您在using
声明中需要注意的事项。除此之外,使用是要走的路。
关于 codeProject 的另一篇相当不错的文章。值得一读。
在您的进程停止使用该资源之前,其他进程将无法访问该资源,因此如果您不需要它,您应该关闭它