次のコードを見てください。C# でのマルチスレッディングについて頭を悩ませています。この例は、いくつかのマニュアルから取られました。私の Main 関数では、3 つのスレッドを作成しようとしています。
2 つのスレッド (エラーあり) を適切に作成する方法を教えてください。
ありがとうございました!
using System;
using System.Threading;
public static class MonitorMethodAccess
{
private static int numericField = 1;
private static object syncObj = new object();
public static object SyncRoot
{
get { return syncObj; }
}
public static void IncrementNumericField()
{
if (Monitor.TryEnter(syncObj, 250))
{
try
{
++numericField;
}
finally
{
Monitor.Exit(syncObj);
}
}
}
public static void ModifyNumericField(int newValue)
{
if (Monitor.TryEnter(syncObj, 250))
{
try
{
numericField = newValue;
}
finally
{
Monitor.Exit(syncObj);
}
}
}
public static int ReadNumericField()
{
if (Monitor.TryEnter(syncObj, 250))
{
try
{
return (numericField);
}
finally
{
Monitor.Exit(syncObj);
}
}
return (-1);
}
}
class Program
{
static void Main(string[] args)
{
Thread aaa = new Thread(MonitorMethodAccess.IncrementNumericField);
Thread bbb = new Thread(MonitorMethodAccess.ModifyNumericField(12);//error
Thread ccc = new Thread(MonitorMethodAccess.ReadNumericField);//error
Console.ReadKey();
}
}