예제 #1
0
 DbgValueNodeAssignmentResult CreateResult(DbgEngineValueNodeAssignmentResult result)
 {
     if (result.Error is not null)
     {
         if (engineValueNode.Value != value?.EngineValue)
         {
             throw new InvalidOperationException();
         }
         return(new DbgValueNodeAssignmentResult(result.Flags, PredefinedEvaluationErrorMessagesHelper.GetErrorMessage(result.Error)));
     }
     return(new DbgValueNodeAssignmentResult(result.Flags, result.Error));
 }
예제 #2
0
        public override DbgEngineValueNodeAssignmentResult Assign(DbgEvaluationInfo evalInfo, string expression, DbgEvaluationOptions options)
        {
            var dispatcher = evalInfo.Runtime.GetDotNetRuntime().Dispatcher;

            if (dispatcher.CheckAccess())
            {
                return(AssignCore(evalInfo, expression, options));
            }
            return(Assign(dispatcher, evalInfo, expression, options));

            DbgEngineValueNodeAssignmentResult Assign(DbgDotNetDispatcher dispatcher2, DbgEvaluationInfo evalInfo2, string expression2, DbgEvaluationOptions options2)
            {
                if (!dispatcher2.TryInvokeRethrow(() => AssignCore(evalInfo2, expression2, options2), out var result))
                {
                    result = new DbgEngineValueNodeAssignmentResult(DbgEEAssignmentResultFlags.None, DispatcherConstants.ProcessExitedError);
                }
                return(result);
            }
        }