我有一個主要任務是產生線程來完成一些工作。工作完成後,它將寫入控制檯。與序列的多線程
我的問題是稍後創建的某些線程將比先前創建的線程更快完成。不過,我需要寫入控制檯,以與線程創建時相同的順序完成。
所以如果一個線程完成了它的任務,而一些早期的線程沒有完成它,它必須等到那些早期的線程完成。
public class DoRead
{
public DoRead()
{
}
private void StartReading()
{
int i = 1;
while (i < 10000)
{
Runner r = new Runner(i, "Work" + i.ToString());
r.StartThread();
i += 1;
}
}
}
internal class Runner : System.IDisposable
{
int _count;
string _work = "";
public Runner(int Count, string Work)
{
_count = Count;
_work = Work;
}
public void StartThread()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(runThreadInPool), this);
}
public static void runThreadInPool(object obj)
{
((Runner)obj).run();
}
public void run()
{
try
{
Random r = new Random();
int num = r.Next(1000, 2000);
DateTime end = DateTime.Now.AddMilliseconds(num);
while (end > DateTime.Now)
{
}
Console.WriteLine(_count.ToString() + " : Done!");
}
catch
{
}
finally
{
_work = null;
}
}
public void Dispose()
{
this._work = null;
}
}
你能使用.net 4.0嗎?我問,因爲語法會更乾淨。 – Xantix 2012-07-27 03:00:46
不幸的是我僅限於.net 2.0 – 2012-07-27 03:05:32