tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: なにもないEXEなのにスレッドが4
投稿日: 2008/02/08(Fri) 22:12
投稿者DOON
> > このEXEをタスクマネージャーでみると
> > スレッド数が4となっています。
> そんなもんです。
そうですか、びっくりしました。
>
> > こっちがスレッドを作成していないのに!!
> > マルチスレッドのEXEが自動で作成されるのでしょうか?
> 自分が管理するのは(作らない限り)一つだけなんで気にする必要は無いです。
それが聞けると安心です。


> > 問題は、今タイマーで動かしているプログラムがあって、
> > どうも、それがマルチスレッドぽい動きをするので
> > 気になっているのです。
> タイマしだいで確かに別スレッドで動くものもありますが、多分マルチスレッドでは動いてません。
> なにか不審な点があれば具体的に質問をお願いします。

すいません。
system.windows.form.timerを画面に貼り付けて、
一秒周期で動かしています。
timer_timer
{
//SQLサーバーにつなぎにいく

//失敗したら、シーケンシャルファイルに失敗した時刻を書き込む
}
としています。
ずーっと、SQLサーバーにつながらないというテストをしています。
すると、シーケンシャルファイルないに同じ時刻が立て続けに
三回ぐらい連続で書き込まれています。

SQLサーバーにつなぎにいくのは失敗したらmsecで帰ってくるのですが
たまに、5秒ぐらい帰ってこないときがあります。
この5秒のあとに、シーケンシャルファイル内に同じ時刻が連続して
書き込まれるときがあります。

なので、その5秒の間にタイマーイベントが増えていっているのでは?
と思ったのですが、シングルスレッドのはずなので、それはありえないと考えました。
そして、何もないプログラムを作成するとスレッド数が4こなので
驚いたというわけです。

解決策としては
timer_timer
{
//最初にタイマーを殺す
 timer.enabled = false

//各処理・・・・

//最後にタイマーを復活
 timer.enabled = true
}
こうすると、問題がなかったのです。

ただ、この動きを理解したいのです。

以上、よろしくお願いします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。