ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:oeppu08 c# スレッド間でのデータの共有
困り度:
  • すぐに回答を!
C#でメインプロセスと生成されたスレッド間でデータの共有をさせたいのですがどのようにすればいいのでしょうか。ご教授お願い致します。

・メインプロセス(A)
・Aから生成されたスレッド(B)

例えば、AとBで変数の値をそれぞれ読み書きさせたい場合
どのようにすればよいのでしょうか。

class TEST
{
public int flag;

// メインプロセス(A)
public static void Main()
{
Thread t = new Thread(new ThreadStart(abc));
t.IsBackground = true;
t.Start();
while(ture)
{
Thread.Sleep(10);
Console.WriteLine("A:{0}",flag);
}
}

// Aから生成されたスレッド(B)
public void abc()
{
Console.WriteLine("B:{0}",flag);
flag++;
}
}
質問投稿日時:08/04/08 15:37
質問番号:3932361
この質問に対する回答は締め切られました。

回答

良回答20pt

回答者:ape5 Mutexを使えばよいのではないでしょうか。

class TEST
{
public int flag;
private static Mutex mx = new Mutex(false,"myMutex");

// メインプロセス(A)
public static void Main()
{
Thread t = new Thread(new ThreadStart(abc));
t.IsBackground = true;
t.Start();
while(ture)
{
mx.WaitOne();
Thread.Sleep(10);
Console.WriteLine("A:{0}",flag);
mx.ReleaseMutex();
}
}

// Aから生成されたスレッド(B)
public void abc()
{
mx.WaitOne();
Console.WriteLine("B:{0}",flag);
flag++;
mx.ReleaseMutex();
}
}

//なお動かしてはいませんので、うまく動かないこともあるかもしれません。
種類:回答
どんな人:一般人
自信:参考意見
回答日時:08/04/09 10:42
回答番号:No.1
この回答へのお礼この回答にお礼をつける(質問者のみ)