MSDN を含む、私が目にする例の 90% は、次の構文を使用しています。
ThreadPool.QueueUserWorkItem(new WaitCallback(MyCallback));
残りの 10% は次を使用します。
ThreadPool.QueueUserWorkItem(MyCallback);
どちらの場合も、 MyCallback は静的関数です。
コンパイラはエラーを出さず、コードはどちらの方法でも機能するように見えます。新しい WaitCallback オブジェクトを作成せず、関数を直接渡すだけで危険はありますか?
コード内のいくつかのバグを見つけようとしており、絞り込んだらより具体的な質問で対処しますが、常に好奇心が強く、答えが見つからなかったので、この一般的な質問もあります。私が見つけた最も近いものはこれでした:
http://msdn.microsoft.com/en-us/library/4yd16hza%28v=vs.90%29.aspx
どの州:
「Visual Basic ユーザーは、コールバック メソッドを QueueUserWorkItem に渡すときに、WaitCallback コンストラクターを省略し、単純に AddressOf 演算子を使用できます。Visual Basic は、正しいデリゲート コンストラクターを自動的に呼び出します。」
...しかし、実際には「C#ユーザーはコンストラクターを使用する必要がある」とは言っていません。また、 /details の理由も知りたいです。.NET 3.5 を使用しています。