2015-03-03 5 views
5

Update: Problem scheint mit .NET 4.5.2 eingeführt zu werden. Bei 4.5.1 oder 4.5 tritt kein Problem auf.WPF NotifyIcon Absturz beim ersten Start - Der Stamm Visual eines VisualTarget kann kein übergeordnetes Element haben

Ich habe ein seltsames Problem Ich habe Schwierigkeiten beim Debuggen. Wir haben eine WPF-Anwendung auf der NotifyIcon von Philipp Sumi gebaut. http://www.codeproject.com/Articles/36468/WPF-NotifyIcon http://www.hardcodet.net/wpf-notifyicon

Wir sind mit dem verion von Nugget:

<package id="Hardcodet.NotifyIcon.Wpf" version="1.0.5" targetFramework="net45" /> 

Das Problem ist, dass das erste Mal (und nur beim ersten Mal) die Anwendung ausgeführt wird, ist es mit der folgenden Ausnahme fehlschlägt. Es ist einfach, neu zu erstellen, indem Sie die Maus über das Taskleistensymbol bewegen, wenn es angezeigt wird. Bei nachfolgenden Läufen gibt es kein Problem. Die Anwendung hat keinen gespeicherten Status oder persistente Daten. Mir ist kein Unterschied zwischen den ersten und nachfolgenden Läufen bekannt. Beim zweiten Mal startet es jedoch viel schneller. Das gleiche Problem tritt in der fensterlosen Beispielanwendung auf, die mit NotifyIcon geliefert wird.

Exception Message and Stack Trace

+0

Da Sie den Quellcode dieser Komponente haben, können Sie versuchen, Ihr Problem selbst zu lösen. Starten Sie einfach eine Debugsitzung und fangen Sie diese Ausnahme im Debugger ab. Überprüfen Sie die relevanten Objekte. Vielleicht gibt es einen Fehler in der Komponente, so dass Sie ihn dann an den Autor senden oder eine Lösung vorschlagen können. – dymanoid

+0

@dymanoid Arbeitet daran.Das Problem tritt auf, wenn die ToolTip.IsOpen-Eigenschaft auf true festgelegt wird. Die Eigenschaft löst eine ArgumentException aus. Ich habe nichts im Quellcode der Komponente falsch gefunden. – denver

+0

"if (_notificationWindow.Visibility == Visibility.Visible) zurückgeben" behebt dieses Problem für mich. Ich zeige das Fenster, das ein Kind des Benachrichtigungssymbols (_notificationWindow) ist, unmittelbar danach. – CRice

Antwort

0

Ich war nicht in der Lage, was das Problem der eigentliche Ursache zu identifizieren ist. Es scheint sich um Änderungen in der Version 4.5.2 des Frameworks zu handeln. Ich habe die folgende Arbeit gefunden.

Zu Beginn der Anwendung erstellen Sie einfach eine QuickInfo und zeigen sie an. Dies scheint zu bewirken, dass die Dinge korrekt konstruiert werden. Zum Beispiel:

Ich würde immer noch gerne wissen, was das eigentliche Problem ist, also wenn jemand weiß, bitte posten.

+0

Habt ihr das jemals herausgefunden? – Boumbles

+0

@Boumbles Nein. Wir haben die Anwendung mit dieser Arbeit veröffentlicht. Soweit ich weiß, gab es keine Probleme. – denver

0

Ich habe das gleiche Problem. Leider kann ich dieses Verhalten nicht reproduzieren, aber ich habe ein anderes Programm, das diese Bibliothek verwendet, was gut funktioniert. Der Hauptunterschied besteht also darin, dass das Arbeitsprogramm nicht nur die ToolTipText-Eigenschaft im XAML-Teil verwendet, sondern auch ein UIElement für die TrayToolTip-Eigenschaft bereitstellt.

<hc:TaskbarIcon.TrayToolTip> 
    <CustomUIElement/> 
</hc:TaskbarIcon.TrayToolTip> 

Vielleicht könnte dies eine alternative Problemumgehung sein.

(Sorry für alle abgesagt Kommentare werden, dass die Code-Blöcke heraus einfach nicht in den Kommentaren unterstützt)

0

Meine Lösung war Symbol zu entfernen, auf null. Das Entfernen dieses Problems löste das gleiche Problem wie in der Frage beschrieben. Auch wenn die Zeile in Window_Close die App beim Start cached wurde.

internal System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon(); 
.... 
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    ni.Icon = Null; 
} 

Jetzt blende ich das Symbol auf Window_Closing mit: (Ansonsten ist das Symbol bleibt in dem nitification Bereich)

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    ni.Visible = false; 
} 

BTW: Mit der "Quick-Info-Lösung", fügte mehr die 10 sek Startzeit meine App.

Verwandte Themen