未验证 提交 4442cf47 编写于 作者: S Sam Harwell 提交者: GitHub

Merge pull request #34071 from sharwell/dte-execute-timeout

Apply a hang mitigating timeout to ExecuteCommand
......@@ -688,8 +688,14 @@ public string GetWinFormButtonPropertyValue(string buttonName, string propertyNa
return properties[propertyName].GetValue(button) as string;
}
public void FormatDocumentViaCommand()
=> ExecuteCommand(WellKnownCommandNames.Edit_FormatDocument);
public void Paste()
=> ExecuteCommand(WellKnownCommandNames.Edit_Paste);
public void Undo()
=> GetDTE().ExecuteCommand(WellKnownCommandNames.Edit_Undo);
=> ExecuteCommand(WellKnownCommandNames.Edit_Undo);
protected override ITextBuffer GetBufferContainingCaret(IWpfTextView view)
{
......@@ -744,10 +750,10 @@ public List<string> GetF1Keywords()
}
public void GoToDefinition()
=> GetDTE().ExecuteCommand("Edit.GoToDefinition");
=> ExecuteCommand(WellKnownCommandNames.Edit_GoToDefinition);
public void GoToImplementation()
=> GetDTE().ExecuteCommand("Edit.GoToImplementation");
=> ExecuteCommand(WellKnownCommandNames.Edit_GoToImplementation);
/// <summary>
/// Gets the spans where a particular tag appears in the active text view.
......
......@@ -8,6 +8,7 @@
using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using Task = System.Threading.Tasks.Task;
namespace Microsoft.VisualStudio.IntegrationTest.Utilities.InProcess
{
......@@ -62,7 +63,10 @@ protected static bool IsCommandAvailable(string commandName)
=> GetDTE().Commands.Item(commandName).IsAvailable;
protected static void ExecuteCommand(string commandName, string args = "")
=> GetDTE().ExecuteCommand(commandName, args);
{
var task = Task.Run(() => GetDTE().ExecuteCommand(commandName, args));
task.Wait(Helper.HangMitigatingTimeout);
}
/// <summary>
/// Waiting for the application to 'idle' means that it is done pumping messages (including WM_PAINT).
......
......@@ -196,7 +196,7 @@ public void FormatDocument()
public void FormatDocumentViaCommand()
{
VisualStudioInstance.Workspace.WaitForAsyncOperations(Helper.HangMitigatingTimeout, FeatureAttribute.Workspace);
VisualStudioInstance.Dte.ExecuteCommand(WellKnownCommandNames.Edit_FormatDocument);
_editorInProc.FormatDocumentViaCommand();
}
public void FormatSelection()
......@@ -212,7 +212,7 @@ public void Paste(string text)
thread.Start();
thread.Join();
VisualStudioInstance.Dte.ExecuteCommand("Edit.Paste");
_editorInProc.Paste();
}
public void Undo()
......
......@@ -8,6 +8,8 @@ public static class WellKnownCommandNames
public const string Build_SolutionConfigurations = "Build.SolutionConfigurations";
public const string Edit_GoToAll = "Edit.GoToAll";
public const string Edit_GoToDefinition = "Edit.GoToDefinition";
public const string Edit_GoToImplementation = "Edit.GoToImplementation";
public const string Edit_ListMembers = "Edit.ListMembers";
public const string Edit_ParameterInfo = "Edit.ParameterInfo";
public const string Edit_QuickInfo = "Edit.QuickInfo";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册