public class SimpleLogger
{
static readonly string logFile = ConfigurationManager.AppSettings["LogFile"];
static StreamWriter GetStream()
{
return File.Exists(logFile) ?
File.AppendText(logFile) : File.CreateText(logFile);
}
public static void Write(string msg)
{
using (var sw = GetStream())
{
sw.Write(msg);
}
}
}
上述代碼因使用不當而無法正確關閉/處置流。隨後的寫入給出了'使用中的文件'IOException。管理靜態方法中的一次性物體
如果該類被修改爲使用非靜態方法,它似乎工作正常。
我不明白爲什麼會有行爲上的差異?
那麼,你是否說我改變它使用非靜態方法時似乎工作的唯一原因是因爲我在測試它時得到了'幸運'? – fearofawhackplanet 2012-02-01 14:42:50
@fearofa - 看起來像,你有能力測試。將一個睡眠(10)放入靜態版本。 – 2012-02-01 15:16:01