public static Task <string> DownloadTask(F.ForShop.Work.Journals.Ref.Context context) { var tcs = new TaskCompletionSource <string>(); var downloader = new Downloader(); downloader.Begin(context, asyncResult => { try { tcs.SetResult(downloader.End(asyncResult)); } catch (Exception exc) { tcs.SetException(exc); } }, null); return(tcs.Task); }
public void DownloadAsync(F.ForShop.Work.Journals.Ref.Context context) { page = new F.ForShop.Work.Journals.Ref.Page() { UserAccount = Entity.Factory.UserAccount.Load(".user.json"), PageContext = context }; //page.Reached += OnReached; //page.ReachAsync(); page.ExcelDownloadCompleted += OnExcelDownloadCompleted; page.ExcelAsync(); }
public virtual IAsyncResult Begin(F.ForShop.Work.Journals.Ref.Context context, AsyncCallback callback, object state) { var ar = new Context() { AsyncState = state, AsyncWaitHandle = null }; Action <string> onDownloaded = null; onDownloaded = (string result) => { Downloaded -= onDownloaded; ar.CompletedSynchronously = true; ar.IsCompleted = true; ar.Result = result; callback(ar); }; Downloaded += onDownloaded; DownloadAsync(context); ar.CompletedSynchronously = false; ar.IsCompleted = false; return(ar); }