イベント処理の流れ
C#.NETにおける、イベント処理の処理順序について、基本的なことが分かっていなかったので動作確認してみました。要は、ボタンを2度押しした場合、どのような処理の流れになるの?、という話です。
動作確認した内容は、次の3つです。
- 1.基本パターン
- 処理の流れに影響するような特別なロジックを記述しないケースです。大部分の実装は、このパターンに該当すると思います。
- 結論:ボタン2度押し時は、1回目のボタン押下時処理が完了してから、2回目のボタン押下時処理が行われました。イベントキューに処理が溜まって、1つずつ実行されるイメージですね。
- 2.ボタン処理のスレッド化
- ボタン押下後の処理を、新規スレッドを作成して実施するケースです。
- 結論:ボタン2度押し時は、1回目のボタン押下時処理と、2回目の処理が並行して動作しました。
- 3.DoEventsメソッド
- ボタン押下時処理の途中で、Application.DoEvents()を実行するケースです。私はこの辺の動作が分かっていませんでした。
- 結論:ボタン2度押し時は、1回目のボタン押下時処理が実行されるが、Application.DoEvents()の部分で、1回目の処理が中断し、2回目の処理が実行される。2回目の処理完了後、1回目の処理が再開する。
動作確認環境
OS:Windows 7
.NET:3.5
Visual Studio:2008