0

私はWindowsフォームが初めてです。私が作成した Windows フォーム アプリは、非常に時間のかかるデータ変換タスクを実行するコンポーネントのフロントエンドです。データ変換タスクは、フォームがサブスクライブするイベントを発行します。

フォームがイベントを受け取ると、ラベル内のテキストを変更し、そのラベルを呼び出しますRefresh()

フォームからプロセスを実行すると、応答性が維持され、ラベル テキストが 1 分ほど更新されます。その後、単にフリーズし、Windows はデータ変換が完了するまでプロセスを「応答なし」と宣言します。フォームがフリーズすると、ラベルはデータ変換が完了したことを示します (予想どおり)。

データ変換を別のスレッドに配置していません。これを最初に試す必要がありますか? イベントはスレッドをまたぐことができますか? そうでない場合、他に何をすべきですか?

4

1 に答える 1

3

はい、スレッドは、作業する必要がある場所です。バージョンによっては、WinForms でのマルチ スレッド化が難しい場合があります。

.NET 4.0 以降を使用している場合は、Microsoft Task Parallel Libraryを使用している可能性があります。

それ以外の場合は、出発点としてお勧めする WinForms アプリケーションでのスレッド化について説明している C# コーナーの優れた記事 (こちら) があります。

BackgroundWorkerは、WinForms でのスレッド化を簡素化するためのもう 1 つのオプションです。

于 2012-09-24T15:54:38.113 に答える