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に更新させることを知っている人はいますか?