我不希望添加StreamWriter
参数写入到文件的程序,但是当我试图用一次性的StreamWriter来工作的我越来越:为什么我不能在对象成员中使用一次性对象?
An unhandled exception of type 'System.ObjectDisposedException' occurred in mscorlib.dll
Additional information: Cannot write to a closed TextWriter.
代码:
let fileLogger = {
new IFlog with
member i.FLog level format =
use file = LogFile()
Printf.kfprintf
(fun f ->
fprintfn file "[%s][%A] "
<| level.ToString()
<| DateTime.Now
) file (format)
所以当我两次调用FLog方法时,我得到了这个。
我可以使用它:member i.FLog file level format
和控制一次性对象的顶层,但后来我失去了所有的抽象。
有没有一些方法来使用这样的一次性物体?或者我如何更改体系结构以避免将一次性参数传递到此函数中?
日志文件是:
let mutable LogFileName = "F.log"
let LogFile() =
match File.Exists(LogFileName) with
| false -> File.CreateText(LogFileName)
| true -> File.AppendText(LogFileName)
如果你有一个日志文件,你为什么要处置 - 只是让应用程序退出时该对象被丢弃 – 2013-04-26 11:29:10
该名称是可变的,可以改变。 – Cynede 2013-04-26 11:36:23