0

UI スレッドでかなりの作業を行う必要があるコントロールがあります。UI の他の部分で遅延が発生します。現時点では、ほとんどの操作が依存関係プロパティで発生し、スレッドをまたぐことを好まないため、それを分割してワーカー スレッドに作業を配置するのは簡単ではありません。

ただし、独自のディスパッチャーを使用して、コントロールを独自のスレッドに分離できるかどうか疑問に思っていました。私は希望を持っていませんが、疑問に思っていました。

ウィンドウのソリューションは見ましたが、個々のコントロールのソリューションは見たことがありません。

4

1 に答える 1

0
var controlThread = new Thread(() => 
{
    var window = new MyWindow();
    System.Windows.Threading.Dispatcher.Run();
});

controlThread.SetApartmentState(ApartmentState.STA);
controlThread.Start();

編集:クレメンスは正しいです。明らかに、コントロールを別のスレッドのコンテナーに単純に追加することはできません。ただし、このような統合が UI の観点から難しい要件ではない場合は、コントロールを Window にすることで機能させることができます。

もう 1 つの方法は、ウィンドウを別のコントロール内のコントロールでラップすることです。次に、ウィンドウの境界線を削除して、位置、サイズ、可視性を一致させることができます。

于 2013-07-26T09:04:12.267 に答える