private static void PreserveCultureUnsafeOnCompleted(ICriticalNotifyCompletion notifier, Action continuation, bool useSyncContext) { // Rely on the SyncContext to preserve culture if it exists if (useSyncContext && SynchronizationContext.Current != null) { notifier.UnsafeOnCompleted(continuation); } else { var preservedCulture = TaskAsyncHelper.SaveCulture(); notifier.UnsafeOnCompleted(() => { TaskAsyncHelper.RunWithPreservedCulture(preservedCulture, continuation); }); } }
public TotemInternalCriticalAwaitable(Func<object, bool> isCompleted, Func<object, object> getResult, ICriticalNotifyCompletion inner) { _awaiter = new Awaiter(isCompleted, getResult, inner); }
public MainThreadAwaitableWrapper(ICriticalNotifyCompletion criticalNotifyCompletion) { _wrapper = new MainThreadAwaiterWrapper(criticalNotifyCompletion); }
public Awaiter(Func<object, bool> isCompleted, Func<object, object> getResult, ICriticalNotifyCompletion inner) { _isCompleted = isCompleted; _getResult = getResult; _inner = inner; }
public MainThreadAwaiterWrapper(ICriticalNotifyCompletion criticalNotifyCompletion) { _criticalNotifyCompletion = criticalNotifyCompletion; IsCompleted = false; }