2018年5月21日 星期一

如何把参數帶進 Task之中

example:
======================
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.........)
            }
=========================
這樣外面的變數就可以傳入了
更詳細的介紹請參考這裡





沒有留言:

張貼留言