イベントが配線されていTextBox
ます。TextChanged
結局SQLデータベースへのクエリなので、クエリ数を制限したい。
ユーザーがキーを押していない場合にのみ、クエリを作成したい.. 300ミリ秒程度。何らかの理由で前のクエリがまだ実行されている場合は、それをキャンセルしてから、新しいクエリを発行する必要があります。
イベントが配線されていTextBox
ます。TextChanged
結局SQLデータベースへのクエリなので、クエリ数を制限したい。
ユーザーがキーを押していない場合にのみ、クエリを作成したい.. 300ミリ秒程度。何らかの理由で前のクエリがまだ実行されている場合は、それをキャンセルしてから、新しいクエリを発行する必要があります。
を作成し、System.Windows.Forms.Timer
キーを押すたびにリセットします (たとえば、停止してから開始します)。タイマー イベントがトリガーされた場合は、タイマーを無効にします。
Reactive Framework を使用して、一連のイベントでトリガーします。これがどのように機能するかは正確にはわかりませんが、ここ ( Reactive Extensions for .NET ) を読んで、ニーズを満たすかどうかを確認してください。ここにもたくさんの例があります: Examples . 「スロットリング」の例は、探しているものかもしれません。
1) タイマーを作成します。
2) タイマーの Tick イベントのハンドラーを作成します。各ティックで、十分なアイドル時間が経過したかどうかを確認し、経過した場合はタイマーを停止してクエリを実行します。
3)そのテキストボックスでキープレスが発生するたびに、タイマーを再起動します。
ユーザーが任意のキーを押すたびに呼び出される 2 番目の actionlistener を追加し、呼び出されたときに現在の時間をグローバル変数に保存します。次に、TextChanged イベントが呼び出されるたびに、グローバル変数と現在の時刻の時間差を確認します。
差が 300 ミリ秒未満の場合は、タイマーを開始して 300 ミリ秒後にクエリを実行します。次に、ユーザーが別のキーを押すと、最初にタイマーがリセットされます。