• ベストアンサー

C#タイマーのギモン???

あるサブForm1でタイマーを使用し一定時間経過後に別のサブForm2を表示します サブForm1のタイマーが指定時間に達しない内にサブForm1の右上にあるクローズ釦(×印マーク)を押すとFrom1は消えます 私の私見(確信に近い意見)では、Form1消去によりタイマーもキャンセルされForm2は表示されることは無いと思います ← 昔からそのように思っておりました しかし想定された時間になるとForm2がパッと表示されます 何故でしょうか? 消えてしまったフォームのタイマーが活き続けているのでしょうか?

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

  • ベストアンサー
回答No.1

そのタイマー (System.Windows.Forms.Timerを仮定します) は,どのように作ったタイマーですか。 デザイナで用意した物ではなく,自分の書いたコードでnewした物ではないでしょうか。 この場合,タイマーはFormに紐付きませんから,Formを閉じるときにタイマーを破棄しないといけません。 破棄しない場合,タイマーは生き続けます。 タイマーの破棄には,FormClosedイベントでDisposeメソッドを呼び出す方法の他, componentsにAddしておく,という方法もあります。 # デザイナで用意したタイマーは後者の方法で破棄されます。

sato-may
質問者

お礼

ご教授ありがとうございます タイマーはデザイナが用意したものを直接使っており、自作コードでnewしたものではありません しかしForm自体はnewしたものであったので、教えて頂いた中の紐付きにヒントを得てDisposeしてみました すると一発OKで解決することが出来ました 誠にありがとうございました

関連するQ&A