- - PR -
2つのタイマー処理で、画面が応答なしになる
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-07 23:15
パネルの更新は、ログで調査するときにコメントアウトしてました。
私がやっていることは、マルチスレッドプログラミングになっていないんでしょうか? マルチスレッドだったら、ログでの調査結果のようにはならないはずだと思うんですが…。 同じインスタンスのメソッドを使っていると、別スレッドの実行が待たされたりするようなことがあるんでしょうか? ログでの調査結果から、個々の処理自体には時間はかかっていない(長くても数百ms)ので、時間がかかって待たされているという感じではないです。 何を疑えば良いでしょうか… | ||||
|
投稿日時: 2007-03-08 00:57
親フォームの方のコードについて述べます。
worker メソッドの方は「ほぼ」Timer の指定時間通りに呼ばれたとしても(とはいえ、リアルタイムOSではないので完全に正確な時間ではないでしょうが)、UpdateText メソッドの方はウィンドウメッセージの処理待ちです。 どのメソッドがどのスレッドで動いていると考えていますか? メインスレッド… Button3_Click、UpdateText、他ウィンドウに関わるもの全て タイマーのスレッド…worker ですよね? いろいろ複雑な事はしているでしょうが、Invoke は基本的に PostMessage を呼び出して終わりだと思います。
メインスレッドでそんな事しないで複雑な計算は Timer のスレッドの方でやらせて、メインスレッドは結果を参照するだけにしたらどうですか? _________________ 囚人のジレンマな日々 |