タスクを返す非同期メソッドがあります。時々、私のプロセスはリサイクル/再開しています。仕事は仕事の途中で中断しています。 TPLに多かれ少なかれ一般的なアプローチがありますが、少なくともタスクが中断されたことを記録できますか?TPLでグローバルtry..finallyの種類を実装する方法は?
- 私はASP.NETでホスティングしていますので、IRegisteredObjectを使用してCancellationTokenでタスクをキャンセルすることができます。しかし、私はこれが好きではありません。私はすべての方法でCancellationTokenを渡す必要があり、私はそれらの多くを持っています。
- try ...最終的には、それぞれの方法ではあまり上がらないようです。続けると動作しない
アドバイスはありますか?
私は自分の非同期タスクを開始しますが、各タスクは任意の数の子タスクを持つことができます。アイデアを得るには:
class CommandRunner
{
public Task Execute(object cmd, Func<object, Task> handler)
{
return handler(cmd).ContinueWith(t =>
{
if (t.State = == TaskStatus.Faulted)
{
// Handle faultes, log them
}
else if (x.Status == TaskStatus.RanToCompletion)
{
// Audit
}
})
}
}
コードを提供できますか?サンプルコードと擬似コードで十分です。 – usr
@usr、私はいくつかのコードを追加しました –