示例#1
0
        private void ExecuteCallback(AsyncCallbackItem[] callbackItems)
        {
            foreach (var callbackItem in callbackItems)
            {
                Action <AsyncCallbackState> callback = callbackItem.ActionCallback;
                SynchronizationContext      synchronizationContext = callbackItem.Context;
                object state         = callbackItem.ActionCallbackData;
                Action finallyAction = callbackItem.FinallyAction;

                synchronizationContext.Post(o => uiContext.BeginLoadingAction(true), null);

                try
                {
                    callback(new AsyncCallbackState(synchronizationContext, state));
                }
                finally
                {
                    synchronizationContext.Post(delegate
                    {
                        if (finallyAction != null)
                        {
                            finallyAction();
                        }
                        uiContext.EndLoadingAction();
                    }, null);
                }
            }
        }