0

UIツリー:2010年4月ツールキットのlistboxdragdroptarget silverlight 4 - UIスレッドのスケジューリングの最速/簡単な方法は?

  • リストボックスの項目テンプレートが問題のクリックハンドラは、これらのボタンのいずれか(したがってにあるボタン
  • のAAカップルを持っているコントロールが含まれて

    • リストボックスUI内の実際のリストボックス項目の一部であるため、潜在的なドラッグアンドドロップ操作)
    • 全体リストボックスアイテムはドラッグできます(リストボックス内で並べ替えるか、別のリストボックスに移動することができます)。クリックハンドラーをtに保つボタンをドラッグすることを禁止する

    現在のところ、いずれかのボタンのクリックハンドラ(上記を参照)の時間がかかるようです(これは、さまざまなUIの変更を引き起こすビューモデルの更新をします。 UIスレッドAFAICT上にある必要があります)、非常に頻繁にドラッグイベントが開始されます。

    このコードをクリックハンドラから取得するための最初の考えは、DoWorkを持たないBackgroundWorkerを作成し、それをすべてRunWorkerCompletedに入れることです。しかし、それはBackgroundWorkerとヘビー級の酷使の両方のように感じます。私が望む効果は、同じスレッド(UIスレッド)上のPostThreadMessageに似ていますが、それほどすばやく行う方法については何も出ていません。

    私は確かにスレッドプールや新しいスレッドで何かをキューに入れて、それをUIスレッドに戻してマーシャリングすることもできますが、やはりそれはかなり乱用のようです。

  • 答えて

    1

    DispatcherPriorityが低いDispatcher.BeginInvokeはPostThreadMessageのように動作すると思います。

    +0

    良いアイデア - SilverlightバージョンはDispatcherPriorityを持っていないようですが、実際にはすぐに戻るためにクリックハンドラが必要です。これは非常に実行可能なオプションのようです。 –

    関連する問題