Есть ли способ ждать, когда слушатель закончит запись в файл.Прямо сейчас половина данных обрезана.Я думаю, потому что TextWriterTraceListener не удается записать данные в файл до закрытия приложения.
static void Main(string[] args)
{
Stopwatch stopwatch = new Stopwatch();
// Begin timing
stopwatch.Start();
try
{
Trace.Listeners.Add(new ConsoleTraceListener(false));
Trace.WriteLine(" ");
Trace.WriteLine(DateTime.Now);
Trace.WriteLine("Starting application...");
Trace.WriteLine("-----------------------------------------------------------");
Trace.WriteLine("Elapsed ms | Task information");
Trace.WriteLine("-----------------------------------------------------------");
Console.ForegroundColor = ConsoleColor.Green;
foreach (int i in Enumerable.Range(1, 3))
{
Trace.WriteLine("Keypair nr: " + i);
Trace.WriteLine(stopwatch.ElapsedMilliseconds + "ms | Starting to generate bytes for wrapping key..");
byte[] keyBytes = generateKeyBytes();
Trace.WriteLine(stopwatch.ElapsedMilliseconds + "ms | ..generation finished.");
Trace.WriteLine(stopwatch.ElapsedMilliseconds + "ms | Executing java to generate private and public keys..");
string keysString = runJava(keyBytes);
Trace.WriteLine(stopwatch.ElapsedMilliseconds + "ms | ..generation finished.");
string[] keys = keysString.Split(',');
byte[] pubKey = Convert.FromBase64String(keys[0]);
byte[] wrappedKey = Convert.FromBase64String(keys[1]);
Trace.WriteLine(stopwatch.ElapsedMilliseconds + "ms | Decrypting the private key..");
byte[] privKey = Decrypt(wrappedKey, keyBytes);
Trace.WriteLine(stopwatch.ElapsedMilliseconds + "ms | ..decryption finished.");
Trace.WriteLine("Public Key:\n\r" + BitConverter.ToString(pubKey));
Trace.WriteLine("Private Key:\n\r" + BitConverter.ToString(privKey));
}
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Trace.WriteLine("From: " + ex.Source + ".\nDetail: "+ ex.Message);
}
finally
{
Trace.WriteLine("Total Elapsed time: " + stopwatch.Elapsed);
stopwatch.Stop();
Console.WriteLine("Any key to exit..");
Console.ReadKey();
}
}
Добавлен мой код.И в файле конфигурации у меня есть:
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="output.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
Последний распечатанный байтовый массив обрезается, и строки из блока finnaly также отсутствуют в файле output.log, но все же они появляются на консоли.1007 *