14

次のようなコードがあります。

public void Start()
{
    var watch = new Stopwatch();
    watch.Start();

    Task.Factory.StartNew(MyMethod1);
    Task.Factory.StartNew(MyMethod2);

    watch.Stop();
    Log(watch.ElapsedMilliseconds);
    Task.Factory.StartNew(MyMethod3);
}

MyMethod1 と MyMethod2 が非同期で呼び出されるため、 watch.Stop() が間違ったタイミングで呼び出されます。MyMethod1 と MyMethod2 が終了した後に .Stop が呼び出されてログに記録されるようにする方法はありますが、MyMethod3 が待機する必要がないことを確認します。

すべてのストップウォッチ機能を Start() メソッドに保持し、3 つのメソッド、つまり MyMethod1、MyMethod2、および MyMethod3 のいずれにもログを記録したくない

4

3 に答える 3