我不希望添加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