MonoMac を使用して、C# で Mac 用のデスクトップ ダウンロード マネージャーを作成しています。
私のXIBにはテーブルビューがあり、その列はにバインドされていNSArrayControllerます。アレイ コントローラは、 を介してメイン ウィンドウ コントローラに接続されていIBOutletます。配列には、HttpDownloadから派生した一連のオブジェクトが保持されNSObjectます。これらのHttpDownloadオブジェクトにはTotalSize、TotalDownloaded、Bandwidth、 などのプロパティが含まれています。これらのプロパティを属性で装飾しました[Export]。
NSArrayControllerコントローラーで、メソッドを使用していくつかの HttpDownload オブジェクトを追加しますAddObject。で開始されるバックグラウンド プロセスTask.Factory.StartNew()は、ダウンロードを非同期的に開始し、データが受信されると TotalDownloaded や Bandwidth などのバインドされたプロパティを更新します。
これらの新しい値がテーブル ビューに反映されているのを確認できますが、UI の更新を「強制」したのは 1 回だけです。たとえば、ウィンドウのフォーカスを失ったり、フォーカスを取得したり、ウィンドウ内のボタンをクリックしたりします。
IB で Continuously Updates Value を設定しようとしましたが、これは違いはありません (ドキュメントを読んでも、そうすべきだとは思いませんでした)。
ウィンドウイベントが発生したときだけでなく、バインドされた値を「リアルタイム」でUIに更新させることを知っている人はいますか?