2
我正在使用.net 3.0。如何確保線程安全 - AddRange線程在.net中
public class GetItems
{
List<Item> items = new List<Item>();
string p1;
string p2;
public List<Item> Get(string para1, string para2)
{
p1 = para1;
p2 = para2;
ThreadStart ts1 = new ThreadStart(Add1);
ThreadStart ts2 = new ThreadStart(Add2);
Thread th1 = new Thread(ts1);
Thread th2 = new Thread(ts2);
try
{
Monitor.Enter(items);
th1.Start();
th2.Start();
th1.Join();
th2.Join();
}
finally
{
Monitor.Exit(items);
}
return items;
}
private void Add1()
{
items.AddRange(C1.GetItems(p1, p2));
}
private void Add2()
{
items.AddRange(C2.GetItems(p1, p2));
}
}
考慮到對這裏的對象的簡單鎖定會使這兩個按順序運行,這似乎是最好的建議。除非實際的生產方法做得更多,否則根本沒有任何意義。也許GetItems需要在後臺運行? – 2011-03-15 18:50:17
用不切實際的例子回答一個問題的正確答案。 – 2011-03-15 18:55:17