テキストボックスとデータグリッドビューを含む Windows フォームがあります。テキストボックスのテキストが変更されるとすぐに、datagridview のデータソースが更新されます。たとえば、テキストボックスの TextChanged イベントを処理し、データソースに新しいリストを割り当てることによって行われます。通常、新しいデータソースには 1000 行以上のかなり大量のデータが含まれます。また、このリストを取得するために DB にクエリを実行するのにも時間がかかります。
驚いたことに、テキスト ボックスにすばやく入力すると、データグリッドはレンダリング自体を何度も中断し、最終結果のみをレンダリングします。中間結果は完全に無視されます。実行中の UI スレッドは連続したテキストの変更中にビジーになるため、これは理にかなっています。しかし、なぜテキストボックスに入力できるのでしょうか?
- テキスト変更
- データの取得
- DataGridView の更新 (レンダリング/ペイントなし)
- テキスト変更
- データの取得
- DataGridView の更新 (レンダリング/ペイントなし)
- ...テキスト変更
- データの取得
- DataGridView の更新 (最終的なレンダリング/ペイント)
- 終わり。
テキストボックスが別のスレッドにあったようですが、まったくそうではありません。理由を知っている人はいますか?