2011-07-05 5 views
3

問題は、それがバインドされているプロパティの値を持つTextBoxを更新する操作であるかのようです。そのプロパティが上記の値を生成するのに時間がかかりすぎる場合、テキストボックスの値を更新しているスレッドは自分自身を殺しますか? (私はこれについては確信していません、ただ仮定します)。これは私にガベージコレクションとアンマネージコードに関するいくつかの問題を引き起こしています。コントロールの更新スレッドのタイムアウトを防ぐにはどうすればいいですか?

更新スレッドが死んでしまって、アンマネージコードへの参照がガベージコレクションされていますが、アンマネージコードが実行されますが、マネージコードから送信されたオブジェクトが破棄されて、管理されていないコード。

この問題に関連する警告は次のとおりです。 ガベージコレクションの代理人 '...'にコールバックが行われました。これにより、アプリケーションがクラッシュし、破損したり、データが失われたりする可能性があります。デリゲートをアンマネージコードに渡す場合、デリゲートは決して呼び出されないことが保証されるまで、マネージアプリケーションによって維持されなければなりません。

この問題を防ぐ方法を教えてもらえますか?

答えて

2

クラスに代理人の参照を保管して、ガベージコレクションを防止します。詳細は

読むthisまたはCollected delegate problem

0

を読んで、あなたは、バインディング拡張ののisAsyncプロパティを使用してみましたか?

{Binding ZZ, IsAsync=true} 
のThreadPoolにあなたの実行デリゲートを入れて、それはそれを取得した後、結果を裏返します

は、同様

ブロックからGUIスレッドを停止します
関連する問題