QueueUserWorkItem
でメソッドを使用しようとしていますThreadPool
が、デリゲートをメソッドに渡そうとすると問題が発生します。私のコードの問題は、デリゲートのセットアップ方法にあると思いますが、グーグルで検索した後でも、それを理解できないようです。
私はデリゲートを次のように作成しています:
public delegate void GetLatencyDelegate(Server server);
サーバーのリストをループして、サーバーの GetLatency メソッドを実行しようとしています。新しいサーバーにループするたびに、プールから新しいスレッドを実行して、GetLatency メソッドを実行する必要があります。これにより、プロセスがスピードアップするはずです。これに対する私のコードは次のとおりです。
ThreadPool.SetMaxThreads(50, 50);
foreach (Server server in serverList)
{
GetLatencyDelegate gld = new GetLatencyDelegate(server.GetLatency);
ThreadPool.QueueUserWorkItem(new WaitCallback(gld));
}
ただし、2 つのエラーが発生します。1つは次のとおりです。
「'GetLatencyDelegate' のオーバーロードは、デリゲート 'System.Threading.WaitCallback' と一致しません。
もう一つは:
'GetLatency' のオーバーロードがデリゲート 'Program.GetLatencyDelegate' に一致しません