私のWPFアプリケーションでは、UIが応答しなくなるのを防ぐために、UI以外のスレッドでいくつかの作業を行いたいと思います。そのために私はこれをしました:
var caller = new AsyncMethodCaller<Pattern>(this.SetPatternType);
caller.BeginInvoke(_patterns, null, null);
そして、デリゲートは次のように定義されます。
public delegate void AsyncMethodCaller<in T>(IEnumerable<T> data);
私の質問は:
BeginInvoke()
新しいスレッドを作成し、その中でコールバックSetPatternType
を実行しますか?もしそうなら、このスレッドはどのくらい続きますか?
このアプローチは一般的に良いですか?そうでない場合、それの何が問題になっていますか?そして、私が直面する可能性のある潜在的な問題は何ですか?
C#4.0とVisualStudio2010を使用しています。
編集:
また、これらに関するいくつかのガイドラインが必要です。
いつ自分で新しいスレッドを作成する必要があり、いつ使用する必要がありBeginInvoke()
ますか?そして、いつDispatcherObject.Dispatcher.BeginInvoke()
オブジェクトを使用する必要がありますか?