public IAsyncResult BeginRetrieve(CacheRequest request, AsyncCallback callback, object state) { var asyncResult = new CacheAsyncResult() { AsyncState = state, AsyncWaitHandle = new AutoResetEvent(false) }; Task.Run(async() => { asyncResult.Response = await GetCacheResponseAsync(request.CanonicalUri); asyncResult.IsCompleted = true; //callback if (callback != null) { callback(asyncResult); } //signal the blocked SSME downloader thread waiting in EndRetrieve if (asyncResult.AsyncWaitHandle != null) { (asyncResult.AsyncWaitHandle as AutoResetEvent).Set(); } }); return(asyncResult); }
public IAsyncResult BeginRetrieve(CacheRequest request, AsyncCallback callback, object state) { var asyncResult = new CacheAsyncResult() { AsyncState = state, AsyncWaitHandle = new AutoResetEvent(false) }; Task.Run(async () => { asyncResult.Response = await GetCacheResponseAsync(request.CanonicalUri); asyncResult.IsCompleted = true; //callback if (callback != null) { callback(asyncResult); } //signal the blocked SSME downloader thread waiting in EndRetrieve if (asyncResult.AsyncWaitHandle != null) { (asyncResult.AsyncWaitHandle as AutoResetEvent).Set(); } }); return asyncResult; }