私の C# ベースのアプリケーションでは、独自の System.Forms.Timer オブジェクトを持つアプリケーションで新しいフォームを作成します。初めてフォームを作成すると、すべて正常に動作しますが、タイマーティックを受け取りますが、問題はありません。特定の条件で、フォームを強制終了し、新しい (同じ) フォーム オブジェクトを作成する必要があります。フォームも同様に作成されます。フォームは適切にロードされ、タイマーは適切に初期化されますが、タイマーは作動しません。タイマーオブジェクトを停止して破棄し、FormLoad で新しいオブジェクトを作成するなど、さまざまなアプローチを試みましたが、無駄でした。私の友人は、おそらく私の新しいフォーム オブジェクトが Windows タイマー メッセージ (WM_TIMER) を受信しないのではないかと提案しました。新しいフォーム オブジェクトでメッセージ ループが正常に機能しているかどうかを確認するにはどうすればよいですか? 私が間違っているのは何ですか?
つまり、フォーム オブジェクトを再作成すると、タイマー ティックが何らかの形で無効になります。お知らせ下さい。
コードはリフレクションでいっぱいで、広がっています。なるべく投稿できるように頑張ります。
新しいフォーム オブジェクトを作成するコード
Form f = ReflectUtils.CreateClassFromAssembly( _TheAssembly, FormName ) as Form;
if ( null == f )
{
throw new ApplicationException( "Failed to create Form: {");
}
_GUICancelEventHandler = new CancelEventHandler( GUIControlForm_Cancel );
f.Closing += _GUICancelEventHandler;
f.Show();
フォームを破棄するコード
f.Close();
f.Dispose();
アプリケーションは同じコードを使用して新しいフォーム オブジェクトを作成します。
タイマーのデザイナ コード
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.timer1.Interval = 500;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
formLoad イベント内
timer1.Start();
お役に立てれば。