Ejemplo n.º 1
0
        public string Execute(string cmd, DebugOutputCallback callback = null)
        {
            HResult hr;
            IDebugOutputCallbacks origCallback;
            var sb = new StringBuilder();

            lock (executeLock)
            {
                hr = client.GetOutputCallbacks(out origCallback);
                if (!hr.IsOK)
                {
                    origCallback = null;
                }

                if (null == callback)
                {
                    callback = (m, t) =>
                    {
                        sb.Append(t);
                        return(0);
                    }
                }
                ;

                hr = client.SetOutputCallbacks(new DebugOutputCallbacks(callback));
                if (!hr.IsOK)
                {
                    sb.AppendLine(string.Format("SetOutputCallbacks failed. HRESULT={0:x}.", hr));
                }
                else
                {
                    hr = control.Execute(DEBUG_OUTCTL.THIS_CLIENT, cmd, DEBUG_EXECUTE.DEFAULT);
                    if (!hr.IsOK)
                    {
                        sb.AppendLine(string.Format("Command encountered an error. HRESULT={0:x}.", hr));
                    }
                }

                if (origCallback != null)
                {
                    client.SetOutputCallbacks(origCallback);
                }
            }

            return(sb.ToString());
        }
    }
Ejemplo n.º 2
0
 public DebugOutputCallbacks(DebugOutputCallback callback)
 {
     this.callback = callback;
 }