请使用task.AsyncState去获取。"/>
C# 异步编程,有时候我们需要拿到异步任务计算体完成计算的数据,请使用task.AsyncState去获取。
直接上代码,运行下就知道怎么回事呢。
using System;
using System.Threading;
using System.Threading.Tasks;class CustomData
{public long CreationTime;public int Name;public int ThreadNum;
}public class AsyncState
{public static void Main(){Task[] taskArray = new Task[10];for (int i = 0; i < taskArray.Length; i++){taskArray[i] = Task.Factory.StartNew((Object obj) =>{CustomData data = obj as CustomData;if (data == null) return;data.ThreadNum = Thread.CurrentThread.ManagedThreadId;},new CustomData() { Name = i, CreationTime = DateTime.Now.Ticks });}Task.WaitAll(taskArray);foreach (var task in taskArray){var data = task.AsyncState as CustomData;if (data != null)Console.WriteLine("Task #{0} created at {1}, ran on thread #{2}.",data.Name, data.CreationTime, data.ThreadNum);}}
}
// The example displays output like the following:
// Task #0 created at 635116412924597583, ran on thread #3.
// Task #1 created at 635116412924607584, ran on thread #4.
// Task #2 created at 635116412924607584, ran on thread #4.
// Task #3 created at 635116412924607584, ran on thread #4.
// Task #4 created at 635116412924607584, ran on thread #3.
// Task #5 created at 635116412924607584, ran on thread #3.
// Task #6 created at 635116412924607584, ran on thread #4.
// Task #7 created at 635116412924607584, ran on thread #4.
// Task #8 created at 635116412924607584, ran on thread #3.
// Task #9 created at 635116412924607584, ran on thread #4.
其中task.AsyncState
就是你任务初始化传入的对象。
更多推荐
C# 异步编程,有时候我们需要拿到异步任务计算体完成计算的数据,请使用task.AsyncState去获取。
发布评论