.net2005で異なるスレッド間でデータをやりとり(あるフォームに、異なるスレッドからデータを表示する等)する際DELEGATEする必要があるということを
知ったのですが、マルチスレッドに対応していないWindowsのタイマーでも
必要なのでしょうか?
例:Form1のタイマー処理の中でForm1のテキストボックスに値を表示する。
> 異なるスレッド間でデータをやりとり(あるフォームに、異なるスレッドからデータを表示する等)する際DELEGATEする必要がある
これは違います。
あるコントロール A を作成したスレッドとは別のスレッドから A を操作しようとするときに、A.Invoke または A.BeginInvoke メソッドの呼び出しを行う必要があると言うことです。
例えばコントロールとは無関係の単なる String 変数に代入するだけなら問題ありません。でもこの String 変数が Control.Text だったら Invoke/BeginInvoke が必要です。
で、System.Windows.Forms.Timer は通常、コントロールと同一スレッドで Tick イベントを発生させるので、Invoke/BeginInvoke は不要です。
回答ありがとうございます。
今回は、タイマーについてですが、他のコントロールやクラス等
使用するときに、別スレッドで動作するかどうかを判断するためには
どのように調べたらいいのでしょうか?
解決しました。
ツイート | ![]() |