C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: スレッドの同期について


(過去ログ 19 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■7902 / inTopicNo.1)  スレッドの同期について
  
□投稿者/ 梨 (1回)-(2007/09/19(Wed) 11:26:26)

分類:[C#] 

よろしくお願いします。

visualstudio2005,c#を使っております。
表際の件の通り、スレッドの同期についてなのですが、下記のようにコードを書いてみたのですが、
このような使い方で問題ないのでしょうか?
あまりよい質問の仕方ではないかと思いますが、よろしくお願いします。

public int_test = 5;
private void F_Load(object sender, EventArgs e)
{
time_Read();

}
private time_Read()
{
timer1.Interval = 1000;
timer1.Enabled = true;

}
private void timer1_Tick(object sender, EventArgs e)
{

System.Object lockThis = new object();
lock (lockThis)
{

if (int_test == 0)
{
timer1.Enabled = false;

}
else
{

Data_Read();

}
}


}
private void Data_Read() {

int_test--;
}
引用返信 編集キー/
■7904 / inTopicNo.2)  Re[1]: スレッドの同期について
□投稿者/ 囚人 (168回)-(2007/09/19(Wed) 11:39:16)
int_test を排他処理したいってコードでしょうか?

とりあえず

System.Object lockThis = new object();
lock (lockThis)

の部分がダメです。

lock するものを毎度生成していたら、別のものをロックしてるだけなので実質何もしないないのと同じですよね。
排他処理を必要とするスレッドが同じオブジェクトをロックしてください。
引用返信 編集キー/
■7907 / inTopicNo.3)  Re[2]: スレッドの同期について
□投稿者/ なちゃ (60回)-(2007/09/19(Wed) 12:04:11)
timer1ってなんでしょう?
フォームに貼り付けたTimerなら、デフォルト設定で同じスレッド(UIのスレッド、ボタンのクリックとかを実行するのと同じスレッド)でしかイベントハンドラに飛んできませんが…

引用返信 編集キー/
■7908 / inTopicNo.4)  Re[3]: スレッドの同期について
□投稿者/ 囚人 (170回)-(2007/09/19(Wed) 12:43:13)
>フォームに貼り付けたTimerなら、デフォルト設定で同じスレッド(UIのスレッド、ボタンのクリックとかを実行するのと同じスレッド)でしかイベントハンドラに飛んできませんが…

あ〜、そうですね。Tick って書いてあるから、System.Windows.Forms.Timer ですね。
引用返信 編集キー/
■7909 / inTopicNo.5)  Re[4]: スレッドの同期について
□投稿者/ 囚人 (171回)-(2007/09/19(Wed) 12:43:52)
> あ〜、そうですね。Tick って書いてあるから、System.Windows.Forms.Timer ですね。

多分ですけど。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -