0

そのため、サブスクライブしているすべてのイベントに対してキープアライブ メソッドを呼び出す必要がある Web サービスに話しかけています。これは、任意の時点で最大 400 のイベントです。

現在、インターバルを実行しない System.Timers.Timer を使用しています。問題は、ThreadPool.QueueWorkersItem() を使用して何かを実行しようとすると、キューに入れられた後、実行に最大 20 秒かかる可能性があるため、これが ThreadPool を使い果たしているように見えることです。

スレッドプールを使い果たすことなくキープアライブ呼び出しを実行する方法はありますか?

BR トーマス

4

1 に答える 1

1

これらのイベントの数、キープアライブ メソッドを呼び出す必要がある頻度、呼び出しにかかる時間によって異なります。実行するメソッドThreadPool.QueueUserWorkItemキューに入れます。すべてのスレッドプール スレッドが占有されている場合、作業項目はスレッドが解放されるまで待機する必要があります。そして、その前にキューに入れられた他のすべてのアイテムに対して。

コメンターが提案したように、おそらく非同期呼び出しを行うことによって、継続的に更新を行う単一の専用スレッドを用意する必要があります。

于 2013-04-18T20:50:33.877 に答える