예제 #1
0
        internal static Task QueueActionAsync(this OrleansTaskScheduler scheduler, Action action, IGrainContext targetContext)
        {
            var    resolver = new TaskCompletionSource <bool>(TaskCreationOptions.RunContinuationsAsynchronously);
            Action syncFunc =
                () =>
            {
                try
                {
                    action();
                    resolver.TrySetResult(true);
                }
                catch (Exception exc)
                {
                    resolver.TrySetException(exc);
                }
            };

            scheduler.QueueAction(syncFunc, targetContext);
            return(resolver.Task);
        }