C#クラシックApplication.DoEvents()



C Classic Application



最近、私は個人のデジタルライブラリ管理システムを作りました。コンピュータファイルのスキャンが含まれるため、360ファイルスキャンの効果と同様に、現在スキャンされているファイルをリアルタイムで表示したいと思います。私は当初、それを達成するために複数のスレッドを使用することを計画していましたが、あまりにも多くのメソッドが実装されていませんでした。後で、私はそれをプログラムで制御しました。ファイルが多すぎるため、仮死状態が発生しました。私が定義したタイマータイマーでさえ、中断されているように見えました。したがって、この問題を解決する必要があります。それから、ここにいる過程で、突然Application.DoEvents()を見つけて使用し、よく恋に落ち、遭遇した問題を解決しました。この記事では、主にApplication.DoEvents()メソッドを紹介します。

Application.DoEvents()を初めて使用したときは、大量のデータをロードするときにデータロードのリマインダーを設定して、システムが仮死状態で表示されないようにしたことを覚えています。当時、私は原理を深く研究していませんでした。結果は多くのApplication.DoEvents()がどこでも使用されています。今日、この側面に関するいくつかの記事を見ました。以前の使用法のいくつかが不適切であったことを知っています。場所によっては、Application.DoEvents()を注意して使用する必要があります。
まず、比較的大きなループを持つプログラムを見てみましょう。その効果は依然として良好であり、たとえば次のようなリアルタイムの応答効果があります。



for(int q = 0 q<1000000 q++)
{{
textBox1.Text = q.ToString()
Application.DoEvents()//テキストボックスの値に対するリアルタイムの応答
}

DoEventsを追加しないと、サイクルタイムが長くなり、仮死状態になり、プログラムは他のイベントを処理できなくなります。また、DoEventsを追加すると、テキストボックスの値にリアルタイムで応答し、ユーザーエクスペリエンスが向上しますが、DoEventsは効率の問題も引き起こし、DoEventsを呼び出した後に同じイベントを処理すると、効率が数倍低下します。タイムズ、これがあなたがそれを注意して使うべき理由です。



C#Application.DoEvents()