2011-07-15 3 views
1

私はTimerで連続的に更新されるDataGridViewを含むMDI Child Formを持っています。私は、タイマーの間隔で起動するSQL操作が他の操作と競合しないようにしたいので、このMDI子フォームに別のスレッドを使用したいと考えています。別のスレッドでMDI Childを開くには

スレッドを作成するにはどうすればいいですか。 MDI親フォームのLoadイベントからこのフォームを開きます。その時にスレッドを作成し、MDI子のロードコードをそこに置くべきでしょうか?

+1

これに対する答えは、もちろん、**あなたは**ではありません。すべてのフォームは、一般に「UIスレッド」として知られている単一のスレッドに表示する必要があります。 *処理*をフォーム全体ではなく別のスレッドに振り分けてください。 –

答えて

2

他のスレッドではUIの操作はできません。プロセスは1つのUIスレッドのみを取得し、すべてのUIコードはそのスレッドで実行する必要があります(別のスレッドでUIを実行しようとすると例外が発生します)。

あなたがすべきことは、UIスレッドでタイマーを実行し、そこからバックグラウンドスレッドにスピンオフさせることです。データが返ってくると、Dispatcherを使用して結果をUIスレッドに同期させる必要があることに注意してください。

関連する問題