請看下面的代碼。 我在C#中使用MultiThreading來解決問題。 這個例子來自一些手冊。 在我的主要功能,我嘗試創建三個線程。線程創建
你能告訴我兩個線程(有錯誤)應該如何正確創建?
謝謝!
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();
}
}
這可能是一個複製粘貼錯誤,但是你錯過了密切的')'在' Program.Main'。應該是'Thread bbb = new Thread(MonitorMethodAccess.ModifyNumericField(12));' – Jacob
他們仍然使用'.Start()'方法啓動線程嗎? (即使'aaa'看起來就像坐在那裏一樣。) – 2013-07-31 21:09:11