kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

イベント処理の流れ

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