public async Task Enqueue_Action_Runs_On_Current_Thread() { var thread = default(Thread); await _NullDispatcher.Enqueue(() => { thread = Thread.CurrentThread; }); thread.Should().Be(Thread.CurrentThread); }
public async Task Stress() { ParameterizedThreadStart safeAction = ctx => { var completion = ctx as TaskCompletionSource <int>; _Dispatcher.Enqueue(() => { Thread.Sleep(2); Count++; }).ContinueWith(_ => completion?.TrySetResult(0)); }; await PrivateStress(safeAction); }
private void RaiseUploadStatusCallback(Action <UploadStatusMessage> uploadStatusCallback, long contentLength, long contentUploadedThisRound, long totalContentUploaded) { if (uploadStatusCallback != null) { _dispatcher.Enqueue(() => { uploadStatusCallback(new UploadStatusMessage() { ContentLength = contentLength, ContentUploadedThisRound = contentUploadedThisRound, TotalContentUploaded = totalContentUploaded }); }); } }
public async Task Stress() { void SafeAction(object ctx) { var completion = ctx as TaskCompletionSource <int>; _Dispatcher.Enqueue(() => { Thread.Sleep(2); Count++; }) .ContinueWith(_ => completion?.TrySetResult(0)); } await PrivateStress(SafeAction); }
private void RaiseErrorResponse(Action <HttpResponseMessage> action, Exception exception) { if (action != null) { _dispatcher.Enqueue(() => { action(new HttpResponseMessage() { Exception = exception, }); }); } }
private static void PutObjectCallback(IAsyncResult ar) { Hashtable state = (Hashtable)ar.AsyncState; Action <string> putCallback = (Action <string>)state["callback"]; try { OssClient ossClient = (OssClient)state["client"]; FileStream fs = (FileStream)state["fs"]; string ossfilename = (string)state["ossfilename"]; ossClient.EndPutObject(ar); fs.Close(); _dispatcher.Enqueue(() => { if (putCallback != null) { putCallback(ossfilename); } }); } catch (Exception ex) { Console.WriteLine(ex.Message); _dispatcher.Enqueue(() => { if (putCallback != null) { if (ex is ServiceException) { string errorCode = ((ServiceException)ex).ErrorCode; putCallback(errorCode); if (errorCode == "InvalidAccessKeyId") { FetchSTSToken(); } } else { putCallback(ex.Message); } } }); } finally { // _event.Set(); } }