</pre>线程入门备份<p></p><p></p><pre name="code" class="csharp"> Parallel.For(0, array.Length, j =>
{});
当执行程序内,使用到 资源会产生争夺时,记得使用lock锁定。
如
Parallel.For(0, array.Length, j =>
{
double d0 = array[j];
int w = (int)(Width * d0) ;
int h = (int)(Height * d0);
int nScan = (int)(Scale * d0);
string sName = dt.ToString("yyyyMMddHHmmss") + "_" + d0 * 10 + ".png";
Bitmap bmp = new Bitmap(w, h);
lock(bmp)
{
....
}
});
使用Task,可以很好的记录线程状态
public static void test1(object str)
{
Console.WriteLine(str.ToString() + "--");
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);
Console.Write(i + "-id:" + str.ToString() + "-");
}
}
Action<object> act = test1;
Task[] taskList = new Task[10];
for (int i = 0; i < 10; i++)
{
taskList[i] = new Task(act, "a" + i);
taskList[i].Start();
}
for (int i = 0; i < 10; i++)
{
taskList[i].ContinueWith((task) => //在线程执行完毕后运行
{
Console.WriteLine(taskList[i].Id + "任务完成.");
});
}