======================
int i=0;
for (;i<10;i++) {
tasks.Add(Task.Run(() => {
Console.WriteLine("i="+i);
}));
}
Task t = Task.WhenAll(tasks.ToArray());
t.Wait();
==========================
上例,task的run是在t.Wait時才呼叫的
此時 i已經是10,而不是各別的0....10
要怎麼把i用參數的方式帶進task呢?
這時要把Task.Run....改一下,才可以帶参數
=========================
int i = 0;
for (; i<files.Count; i+=100) {
tasks.Add(Task.Factory.StartNew((Object obj) =>{
var data = (dynamic)obj;
int i2 = (int)data.iX;
Console.WriteLine("i="+i2);
}, new { iX = i}));//{可以串很多個参數,x=i,y=5,z=7.........)
}
=========================
這樣外面的變數就可以傳入了
更詳細的介紹請參考這裡
沒有留言:
張貼留言