我觉得我在这里使用了错误的Using语句。有没有更好的写法?
Dim x As New Serialization.XmlSerializer( ... )
Using file As New FileStream(myFile, FileMode.Create)
Using writer As XmlWriter = XmlTextWriter.Create(file)
x.Serialize(writer, myCollection)
End Using
End Using
我读到过只有在对象具有.Dispose()(即实现IDisposable)时才应使用using块,这就是为什么我认为"writer"上不应该有Using,而应该在结尾处使用writer.Close()。但是"file"既具有.Dispose()又具有.Close(),那我应该使用哪个?是using还是file.Close()?
注意:我正在使用XmlWriter,因为我可以自定义输出。我在此处删除了设置。
Serialize()
之后添加writer.Flush()
语句。如果不显式刷新它们,流编写器以不写入最后一批缓冲数据而出名。 - Toby.Dispose()
不会调用.Close()
(就像 Hans Passant 说的那样),然后再调用.Flush()
吗?所以使用 Using 就可以处理所有这些问题了吧? - grantUsing a As New blah, b As New blah
。链接 - MarkJ