0
我正在使用MS UIA框架及其內置的自動化事件處理。我在WindowClosedEvent上看到意外的行爲。自動化事件處理程序被觸發不止一次
也許我在這裏做錯了什麼,但我的理解是控制檯調用應該執行一次。當我運行上面的代碼時,Console行被執行兩次。
當我的TestApp關閉時,沒有它運行的特殊事件。測試應用程序也只是一個WPF窗口。
[TestMethod]
public void TestMethod1()
{
Process.Start(@"TestApp.exe");
Thread.Sleep(2000); //sleep to wait for proc to boot with ui
var windowElement = AutomationElement.RootElement.FindFirst(TreeScope.Descendants,
new AndCondition(new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window),
new PropertyCondition(AutomationElement.NameProperty, "TestApp"), new PropertyCondition(AutomationElement.AutomationIdProperty, "TestAppAutomationId")));
Automation.AddAutomationEventHandler(WindowPattern.WindowClosedEvent, windowElement, TreeScope.Element,
OnClose);
var windowPattern = (WindowPattern)windowElement.GetCurrentPattern(WindowPattern.Pattern);
windowPattern.Close();
Thread.Sleep(2000); //sleep to wait for uia's event threads to fire and finish.
}
public void OnClose(object sender, AutomationEventArgs e)
{
Console.WriteLine("test"); //this is run twice during the test
}
我在Windows 10
運行鍼對.NET 4.5.2如果我在這裏做得不對,將導致處理火不止一次請讓我知道。
感謝。
@nouman請不要有屬性值使用大寫字母,因爲它們看起來像是在大喊大叫。 –
我已經解決了這個難題 –