2017-11-21 11 views
-2

誰かがこれがうまくいかない理由を私に説明することはできますか?これは私にとって驚くべきことです。これが実行可能な使用法でない場合、私はこれがデザインのにおいであると言います。 APIの設計によってこれを行うことは許されないか、有用なエラーが予想されます。ConsoleLoggerを直接作成すると驚くほどうまく動作しない

public static void Main(string[] args) 
    { 
     var l = new ConsoleLogger("test", (s, ll) => true, true); 
     l.WriteMessage(LogLevel.Critical, "test", 0, "hello world", null); 
    } 

この実装は、文字通り何も出力しません。どうして?私はDependencyInjectionとサービスの場所の仕組みを使わなければならないとは思わない。

答えて

1

私はそれが火災のためであり、(Task.Factory.StartNew)の実装を忘れていると思います。 hereを参照してください。 (言い換えれば、コードが印刷されるメッセージを待機しません。)

をあなたがこれを行う場合:

var l = new ConsoleLogger("test", (s, ll) => true, true); 
for (int i = 0; i < 10000; i++) 
{ 
    l.WriteMessage(LogLevel.Critical, "test", 0, "hello world", null); 
} 

を、それが正常に動作し、メッセージが印刷されています。

コンソールログを同期して行う必要がある場合は、ログ操作を待つところにown console loggerを実装することをお勧めします。

+0

ありがとうございます! – Firoso

関連する問題