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
Я не хочу использовать Trace.Close() не в Finalizer.
изменить
после @eric Ответ Lippert: Ive повторно отредактировал код, пытаясь его сопоставить с: область ограниченного выполнения (но все еще нет)
[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();
}
}