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 TaskDownloadAsync() { 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