public static void ValidateMode(SynchronizationContextMode currentMode, SynchronizationContextMode requiredMode, string specificErrorMessage) {
     Debug.Assert(specificErrorMessage != null);
     if (currentMode != requiredMode) {
         string errorMessage = FormatErrorMessage(specificErrorMessage, requiredMode);
         throw new InvalidOperationException(errorMessage);
     }
 }
        private static string FormatErrorMessage(string specificErrorMessage, SynchronizationContextMode requiredMode)
        {
            // The output of this function will be a message like this:
            // "What you're trying to do is unsupported. Follow these steps to resolve it. For more
            // info, see this URL."

            string resolutionMessage;

            if (HttpRuntime.TargetFramework < VersionUtil.Framework45 && requiredMode == SynchronizationContextMode.Normal)
            {
                // upgrade to 4.5 mode
                resolutionMessage = SR.SynchronizationContextUtil_UpgradeToTargetFramework45Instructions;
            }
            else if (HttpRuntime.TargetFramework >= VersionUtil.Framework45 && requiredMode == SynchronizationContextMode.Legacy)
            {
                // already in 4.5 mode, add the back-compat switch
                resolutionMessage = SR.SynchronizationContextUtil_AddDowngradeAppSettingsSwitch;
            }
            else
            {
                // remove the <appSettings> switch
                resolutionMessage = SR.SynchronizationContextUtil_RemoveAppSettingsSwitch;
            }

            return(SR.GetString(specificErrorMessage)
                   + " " + SR.GetString(resolutionMessage)
                   + "\r\n" + SR.GetString(SR.SynchronizationContextUtil_ForMoreInformation));
        }
 public static void ValidateMode(SynchronizationContextMode currentMode, SynchronizationContextMode requiredMode, string specificErrorMessage)
 {
     Debug.Assert(specificErrorMessage != null);
     if (currentMode != requiredMode)
     {
         string errorMessage = FormatErrorMessage(specificErrorMessage, requiredMode);
         throw new InvalidOperationException(errorMessage);
     }
 }
Ejemplo n.º 4
0
        // TAP
        internal PageAsyncTask(Func<CancellationToken, Task> handler, SynchronizationContextMode currentMode) {
            if (handler == null) {
                throw new ArgumentNullException("handler");
            }

            // The legacy PageAsyncTaskManager doesn't support TAP methods
            SynchronizationContextUtil.ValidateMode(currentMode, requiredMode: SynchronizationContextMode.Normal, specificErrorMessage: SR.SynchronizationContextUtil_TaskReturningPageAsyncMethodsNotCompatible);

            TaskHandler = handler;
        }
Ejemplo n.º 5
0
        // TAP
        internal PageAsyncTask(Func <CancellationToken, Task> handler, SynchronizationContextMode currentMode)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }

            // The legacy PageAsyncTaskManager doesn't support TAP methods
            SynchronizationContextUtil.ValidateMode(currentMode, requiredMode: SynchronizationContextMode.Normal, specificErrorMessage: SR.SynchronizationContextUtil_TaskReturningPageAsyncMethodsNotCompatible);

            TaskHandler = handler;
        }
Ejemplo n.º 6
0
        // APM
        internal PageAsyncTask(BeginEventHandler beginHandler, EndEventHandler endHandler, EndEventHandler timeoutHandler, Object state, bool executeInParallel, SynchronizationContextMode currentMode) {
            if (beginHandler == null) {
                throw new ArgumentNullException("beginHandler");
            }
            if (endHandler == null) {
                throw new ArgumentNullException("endHandler");
            }

            // Only the legacy PageAsyncTaskManager supports timing out APM methods or executing them in parallel
            if (timeoutHandler != null || executeInParallel) {
                SynchronizationContextUtil.ValidateMode(currentMode, requiredMode: SynchronizationContextMode.Legacy, specificErrorMessage: SR.SynchronizationContextUtil_PageAsyncTaskTimeoutHandlerParallelNotCompatible);
            }

            BeginHandler = beginHandler;
            EndHandler = endHandler;
            TimeoutHandler = timeoutHandler;
            State = state;
            ExecuteInParallel = executeInParallel;
        }
        private static string FormatErrorMessage(string specificErrorMessage, SynchronizationContextMode requiredMode) {
            // The output of this function will be a message like this:
            // "What you're trying to do is unsupported. Follow these steps to resolve it. For more
            // info, see this URL."

            string resolutionMessage;
            if (HttpRuntime.TargetFramework < VersionUtil.Framework45 && requiredMode == SynchronizationContextMode.Normal) {
                // upgrade to 4.5 mode
                resolutionMessage = SR.SynchronizationContextUtil_UpgradeToTargetFramework45Instructions;
            }
            else if (HttpRuntime.TargetFramework >= VersionUtil.Framework45 && requiredMode == SynchronizationContextMode.Legacy) {
                // already in 4.5 mode, add the back-compat switch
                resolutionMessage = SR.SynchronizationContextUtil_AddDowngradeAppSettingsSwitch;
            }
            else {
                // remove the <appSettings> switch
                resolutionMessage = SR.SynchronizationContextUtil_RemoveAppSettingsSwitch;
            }

            return SR.GetString(specificErrorMessage)
                + " " + SR.GetString(resolutionMessage)
                + "\r\n" + SR.GetString(SR.SynchronizationContextUtil_ForMoreInformation);
        }
Ejemplo n.º 8
0
        // APM
        internal PageAsyncTask(BeginEventHandler beginHandler, EndEventHandler endHandler, EndEventHandler timeoutHandler, Object state, bool executeInParallel, SynchronizationContextMode currentMode)
        {
            if (beginHandler == null)
            {
                throw new ArgumentNullException("beginHandler");
            }
            if (endHandler == null)
            {
                throw new ArgumentNullException("endHandler");
            }

            // Only the legacy PageAsyncTaskManager supports timing out APM methods or executing them in parallel
            if (timeoutHandler != null || executeInParallel)
            {
                SynchronizationContextUtil.ValidateMode(currentMode, requiredMode: SynchronizationContextMode.Legacy, specificErrorMessage: SR.SynchronizationContextUtil_PageAsyncTaskTimeoutHandlerParallelNotCompatible);
            }

            BeginHandler      = beginHandler;
            EndHandler        = endHandler;
            TimeoutHandler    = timeoutHandler;
            State             = state;
            ExecuteInParallel = executeInParallel;
        }