Using Task create non-blocking, TaskCompletionSource SetResult helps send result accross
static void Main(string[] args)
{
Task<string> t = DownloadAsync();
Console.WriteLine("Do some other work while wating for Async Donwload");
Thread.Sleep(3000);
Console.WriteLine("other work done");
t.ContinueWith((t1) => { Console.WriteLine(t1.Result); });
// Task.WaitAny(new[] { t }); Wait =Readline to keep program running
// Console.WriteLine(t.Result);
Console.ReadLine();
}
static Task DownloadAsync()
{
TaskCompletionSource<string> ts = new TaskCompletionSource<string>();
string i="";
Task.Factory.StartNew(()=> { i = DownloadSync(); }).ContinueWith((t)=>
{ ts.SetResult(i); });
return ts.Task;
}
static string DownloadSync()
{
Thread.Sleep(5000);
return "Data";
}
Sunday, June 29, 2014
Use TPL/ TaskCompletionSouce to Implement DownloadAsync
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment