火災と忘れの多くの質問で提供される解決策をフォローアップします。私のシナリオでは、Forgottenイベントがトリガーされるように実行する必要があるということです。火災と忘れ(完全ではない)
私のソリューションはここSimplest way to do a fire and forget method in c# 4.0
に基づいていますが、私のテストコードです。また、期待どおりに処理される順序は保証されませんでした。
static void Main(string[] args)
{
Test(5);
Console.WriteLine("5 sent");
Test(2);
Console.WriteLine("2 sent");
Test(1);
Console.WriteLine("1 sent");
Test(4);
Console.WriteLine("4 sent");
Console.WriteLine("all sent");
Console.ReadLine();
}
private static void Test(int messageNumber)
{
Action myMethod =() => {
Task.Delay(messageNumber * 1000);
Console.WriteLine(messageNumber);
};
Blindly.Run(myMethod);
}
と私の出力
5 sent
2 sent
1 sent
4 sent
all sent
2
1
5
4
、想像してみて、あなたは火を使用していて、ログ記録のために忘れてください。したがって、呼び出しコードをブロックするのではなく、記録されたすべてのデータを発生順に書き込む必要があります。
あなたの行動をキューイングし、必要な順序でそれらを起動しないのはなぜ? – Shocked
'Task.Delay(messageNumber * 1000);は待たれていないので、このシナリオでは役に立たないと思いますか?次の行 'Console.WriteLine(messageNumber);の前には遅延がありません。 –