デリゲートを受け取り、そのデリゲートをループで実行するメソッドを作成しようとしています。これはそれほど難しいことではありません。たとえば、次のようになります。
public static void RunInLoop<T>(IEnumerable<T> someCollection,
Action<T> action)
{
foreach (var item in someCollection)
{
action(item);
}
}
RunInLoop
ただし、のようなことを行う手段をユーザーに提供したいとします。break
つまり、ループの実行を停止します(または単にから戻るRunInLoop
)。
私が考えたこと:
-というメソッドを作成します。これは(プライベート)例外をスローし、try catchで
Break()
囲み、(プライベート)例外をキャッチした場合は戻るだけです。action(item)
デリゲートがキャッチを渡した場合、これはあまり良くありませんException
。foreach
新しいスレッドでを実行しBreak()
、現在のスレッドを強制終了して実装します。他の理由の中でも、UIベースのアプリケーション(Silverlightなど)でメソッドを使用する場合、これは適切ではありません。UIスレッドで実行する必要がある場合があります。私が得たもう1つの提案は、各実行の最後に確認するという条件で、追加の代理人を受け取ることでした。
break
それはユーザーにとって直感的ではなく、反復の終わりに制限されるため、私もそれが好きではありません。これが今のところ私の最後の手段です。
だから私はまだ見つけることができた良い解決策はありません。何か提案/方向性はありますか?