7

プログレスバー付きのC#Windowsフォームアプリケーションがあります。メソッドのステータスに基づいて動的に進めたいと思います。そのメソッドは別のクラスにあり、そのメソッドの新しいスレッドを作成しています。デリゲートを使用して、メソッドのステータスを親スレッドに渡します。

を使用してWPFアプリケーションで解決できるのと同じ状況ですが、Windowsフォームアプリケーションでは、名前空間progressbar.Dispatcherを使用してもディスパッチャーがありません。System.Threading

progressbar.DispatcherWPFアプリケーションでのみ使用できるようです。

4

3 に答える 3

12

WinFormsでは、ProgressBar.InvokeまたはProgressBar.BeginInvokeを使用して、別のスレッドからコントロールを更新できます。

于 2012-11-23T08:22:24.827 に答える
5

WindowsフォームアプリケーションBackgroundWorkerでは、タスクに完全に適合する必要があります。特に、ReportProgress計算に応じて進捗状況を送信しProgressChanged、UIスレッドからの変更を追跡する方法があります。詳細については、 MSDNの記事を参照してください

于 2012-11-23T07:35:56.317 に答える
4

WinFormsでは、 System.Windows.Forms.ControlInvoke/BeginInvokeのドキュメントからわかるように、メソッドはコントロールオブジェクト上に直接あります。だからあなたは例えば持っているでしょう。progressBar.BeginInvoke(...)

于 2012-11-23T08:39:06.730 に答える