强制关闭流
问题描述:
我有一个问题不时,我有几个StreamReader
s和StreamWriter
s在我的程序中读取信息并写入它。他们大概99%的时间都是正确的,但是偶尔我会碰到一段不会关闭的StreamWriter
,我已经多次运行一段代码。强制关闭流
这种情况往往会发生,如果我发送垃圾邮件的功能,但我试图找到一种安全的方式来保证蒸汽处置。任何人都知道吗?
答
尝试using
声明MSDN
using (StreamWriter stream = new StreamWriter(Initialization)){
//your code
}
这可能是有用的:
Closing Stream Read and Stream Writer when the form exits
你也可以使用一个Try
块
try
{
//Declare your streamwriter
StreamWriter sw = new StreamWriter(Initialization);
}
catch
{
//Handle the errors
}
finally
{
sw.Dispose();
}
+0
是的。我会继续这个。混合中可能会有更多的IDisposables。也使用这些使用模式。 – spender 2011-06-10 14:49:03
答
的包装纸中的StreamWriter使用声明是我通常如何确保它被处置。
using (var writer = new StreamWriter(@"C:\AFile.txt"))
{
//do some stuff with writer
}
另一种方法是使用finally
块。
答
如果流的范围是局部的,总是使用下面的结构:如果在另一方面,你使用的是流作为类字段然后实现IDisposable
模式和处置您的流物体配置时
using (var stream = new Stream())
{
...do stream work here...
}
您的班级:IDisposable
“不会关闭”含糊不清。这是什么意思?什么迹象使你相信他们不会关门?这是什么意思 - “垃圾邮件功能”?在短时间内多次调用该功能? – spender 2011-06-10 14:47:25
您使用流式读取器/写入器的范围是什么?你可以发布一些代码吗? – 2011-06-10 14:47:28
是的,我很含糊。我必须认同。我使用streamreader来开始一个流来读取文件,然后使用XX.dispose();处置它。每过一段时间,虽然它不会处理,并且我将以“文件正在使用”结束,直到我重新启动我的程序。这是我试图找出是否有修复的错误,因为我已经在使用所提出的修复程序。 – Charles 2011-06-10 17:56:57