6
10000個のメッセージを送信する必要があります。現時点では同期的に発生し、すべてを送信するまでに最大20分かかります。 C#で非同期で5000個のメッセージを送信
// sending messages in a sync way
foreach (var message in messages)
{
var result = Send(message);
_logger.Info($"Successfully sent {message.Title}.")
}
は、私は非同期を使用して待つしたいのですが、メッセージの送信時間を短縮するが、C#のランタイムがワーカープロセスでタスクの15000数を扱うことができれば、私の懸念があります。
var tasks = new List<Task>();
foreach (var message in messages)
{
tasks.Add(Task.Run(() => Send(message))
}
var t = Task.WhenAll(tasks);
t.Wait();
...
また、メモリの面で、私は私が仕事から帰ってきたので、それは15000のタスク
TPLはスレッドプールを使用し、 'Task.Run()'ごとに新しいスレッドを生成しません。 – Loris156
ちょうどこれを実行して、それがどうなるかを確認してください – Evk
sendメソッドが並行して動作できるようになると時間が短縮されます。 –