Ich arbeite mit dem MS UIA Framework und seiner integrierten Automation Event Handling. Ich sehe unerwartetes Verhalten im WindowClosedEvent.Automation Event Handler werden mehr als einmal ausgelöst
Vielleicht mache ich hier etwas falsch, aber mein Verständnis war, dass der Konsolenanruf einmal ausgeführt werden sollte. Wenn ich den obigen Code ausführe, wird die Console-Zeile zweimal ausgeführt.
Wenn sich meine TestApp in der Nähe befindet, werden keine speziellen Ereignisse ausgeführt. Die Test-App ist auch nur ein einzelnes WPF-Fenster.
[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
}
Ich renne gegen .NET 4.5.2 auf Windows 10.
Wenn ich hier falsch, etwas zu tun habe, dass der Handler verursachen würde mehr Feuer als einmal lass es mich wissen.
Danke.
@nouman funktionieren übergeben wird nicht Verwenden Sie Großbuchstaben, als ob Sie schreien. –
Ich habe dieses Rätsel gelöst –