class Program : CriticalFinalizerObject
{
static void Main(string[] args)
{
Program p = new Program();
TextWriterTraceListener listener = new TextWriterTraceListener(@"C:\trace.txt");
Trace.Listeners.Clear(); // Remove default trace listener
Trace.Listeners.Add(listener);
Trace.WriteLine("First Trace"); // Generate some trace messages
Trace.WriteLine("Perhaps last Trace.");
}
~Program()
{
Trace.Close();
}
}
我得到的文件大小为0。
由于我从CriticalFinalizerObject
派生,所以应该执行finalizer。
我不想在finalizer之外使用Trace.Close()
。
编辑
在@eric Lippert的回复之后:我重新编辑了代码,尝试将其匹配到:受限执行区域(但仍然没有成功)。
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
class Program : CriticalFinalizerObject
{
static void Main(string[] args)
{
RuntimeHelpers.PrepareConstrainedRegions();
try
{
}
catch (Exception e)
{
}
finally
{
Program p = new Program();
TextWriterTraceListener listener = new TextWriterTraceListener(@"C:\trace1.txt");
Trace.Listeners.Clear();
Trace.Listeners.Add(listener);
Trace.WriteLine("First Trace");
Trace.WriteLine("Perhaps last Trace.");
}
}
~Program()
{
Trace.Flush();
}
}