0

ソースからターゲットに大量のファイルをコピーする WPF アプリケーションがあります。したがって、ディスパッチャーを使用してこのジョブを実行しましたが、ファイルのコピーが完了するまで、アプリケーションがフリーズし、タイトルバーに「応答していません」と表示されます。

ButtonPower.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Send,
new NextPrimeDelegate(this.DoAction));  

コピー操作が完了するまでプログレスバーを表示したいのですが、ウィンドウがフリーズしてはいけません。これを解決するための解決策や提案をいただければ幸いです

4

2 に答える 2

4

ディスパッチャーを使用しても、UI がフリーズしないわけではありません。実際、ディスパッチャーはすべての作業が同じ UI スレッドで行われるようにするため、UIフリーズします。代わりに、新しいスレッドを生成し、そこで作業を実行する必要があります。次に、ディスパッチャーを使用して UI に更新を通知します。これは、新しいスレッド内から許可されていないためです。それがディスパッチャの主な目的です。

適切な実装とさらなるアイデアについては、この回答を参照してください。

于 2013-03-09T12:15:10.430 に答える