私は、自分のウィンドウのフォームで10秒間タイマーを設定しています。 OnTimedEventの場合は、時間が経過した後にフォームが破棄されるように設定されています。しかし、タイマーでフォームを処理するクロススレッドエラー
のエラーがあるようです。InvalidOperationExceptionがユーザーコードによって処理されませんでした。
クロススレッド操作が無効です:作成されたスレッド以外のスレッドからコントロール 'notificationForm'がアクセスされました。
エラーがライン上
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
だった私のタイマーイベントのコードは、誰もがこの問題を解決する方法を知っている
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
this.Dispose();
}
のですか?ありがとう!
HIであるので、これは動作します。あなたの返事に感謝します。ちょうどwanaが知っている、system.windows.form.timerと通常のタイマーとの違いは何ですか? – Thomas
Timers.Timerはサーバーベースのタイマーです。これは、フォームとは異なるスレッド上にある理由です。 WindowsのタイマーはGUIと同じスレッド上で実行されます。これがwinformsアプリケーションでは一般に使用するより適切なタイマーです。 ToolBoxのタイマーはForms.Timerです。 – LarsTech