• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(C#)フォームのキャンセルで計算を中断する方法)

(C#)フォームのキャンセルで計算を中断する方法

このQ&Aのポイント
  • VisualStudio(Standard)でC#の勉強をしている者です。フォームのキャンセルボタンをクリックしても、実際にイベントが発生していないのか、ループを中断することができなかった。
  • フォームのキャンセルボタンをクリックした時にイベントが発生し、ループを中断する方法を教えてください。
  • 上記のコードではキャンセルボタンをクリックしてもループを中断することができなかった。どのようにすれば良いのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★ループの中でメッセージ処理を行えばよい。 ・キャンセルボタンを押してもループを止める事が出来なかった理由は、ループ中に  メッセージを処理していないためです。このため、キャンセルボタンを押した信号が  出てもループ処理中なのでメインのプロシージャで Cancel_Click 関数が呼ばれなかった  のです。 ・私は C# は名前程度しか知らないため実装例を紹介できません。  参考になればと思い C言語での処理をサンプルとして載せます。 サンプル: MSG msg; while ( PeekMessage(&msg,hWnd,0,0,PM_REMOVE) ){  if ( !IsDialogMessage(hWnd,&msg) ){   TranslateMessage( &msg );   DispatchMessage( &msg );  } } その他: ・C# でもメッセージを処理する関数(メソッド)などがあると思いますので調べてみて下さい。  検索キーワードは『DoEvents』で探すと見つかると思います。  下に1つだけ紹介します。→おそらく DoEvents() メソッドを使えば Cancel_Click 関数が  呼ばれるようになってキャンセルできるようになると思います。 ・以上。参考に。

参考URL:
http://www.atmarkit.co.jp/fdotnet/dotnettips/136doevents/doevents.html
kary
質問者

お礼

ご回答いただき、ありがとうございます。教えていただきましたDoEvents()をループの中に入れることでキャンセルすることができました。非常に勉強になりました。ありがとうございました。

関連するQ&A