ReSharper は、私が持っていた foreach ループをこのようなものにリファクタリングしました。デリゲートの BeginInvoke を介して一連のスレッドを生成し、さまざまなパラメーターをリストに格納して、IAsyncResults をコレクションに格納したいと考えました。
var asyncResults = mylist.Select(x => myDelegate.BeginInvoke(x, null, null));
私の本能的な反応は、これは良い習慣ではないということです。BeginInvoke は新しいスレッドが生成されるという副作用を引き起こしていますが、Select に渡された関数は副作用を引き起こすべきではありません。
それとも、呼び出しスレッドで何も変更していないので、大丈夫ですか?