AsyncState
あまり使い道が思い浮かばなかったが、一応メモ
AsyncStateを使うとTaskの中に埋め込まれたオブジェクトを取得することが出来る。
Taskの値を取得したいならTask.Resultを使う場合がほとんどだと思うけど、いつ使うんだコレ
using System;
using System.Threading;
using System.Threading.Tasks;
class Program {
static void Main(string[] args) {
Task task = Task.Factory.StartNew( x => Calc( (Data)x), new Data(){init = 123});
task.Wait();
Data data = task.AsyncState as Data;
Console.WriteLine( "init:{0} id:{1} rand:{2}", data.init, data.id, data.rand);
}
public static void Calc( Data data){
data.id = Thread.CurrentThread.ManagedThreadId;
data.rand = new Random().Next(1000);
}
}
class Data{
public int init;
public int id;
public int rand;
}