Form reagirt nicht.

20/09/2008 - 16:50 von Florian Rubink | Report spam
Hallo NG

Ich habe eine klasse mit dem "ManagementEventWatcher" welche ein event
auslöst sobald ein neues Wechselmedium verbunden wird.

Sobald das event ausgelöst wird möchte ich auf der form
einen Label Text àndern nur leider passiert da nix =(
im debugmodus wird auch kein weiterer code ausgeführt.
Es kommt kein fehler. Und die anwendung làuft auch weiter.. mit einem butten
der die Funktion auslöst geht es problemlos.

Danke für jeden tip.

public partial class MyForm: Form
{
private DriveDetector d = null;
public MyForm()
{
d = new DriveDetector();
this.d.DevicesChanged += new DriveDetectorEventHandler(FormUpdate);
}

private void FormUpdate(object sender, DriveDetectorEventArgs e)
{
Label1.text = "Neues Laufwerk gefunden." //der Debugger geht noch
auf diese Zeile und dann ist ende.
Label2.text = "Neuer Text."
}
}
 

Lesen sie die antworten

#1 Frank Dzaebel
21/09/2008 - 09:13 | Warnen spam
Hallo Florian,

Es kommt kein fehler. Und die anwendung làuft auch weiter.. mit einem
butten der die Funktion auslöst geht es problemlos.

this.d.DevicesChanged += new
DriveDetectorEventHandler(FormUpdate); }



Wir müssten eigentlich die Implementation der
Klasse "DriveDetector" sehen ... so, kann man nur vermuten.

Trotzdem, meine *Vermutung* ist, dass Deine
Klasse wohl die WqlEventQuery in einem
anderen Thread aufruft, denn sonst würde ja
"WaitForNextEvent" die App komplett nicht
responsefàhig machen. Wenn dem so ist, befindet
sich aber die "FormUpdate" Methode wahrscheinlich in
einem anderen Thread und dann ist das
Setzen/Modifizieren eines im MainThread erstellten
Steuerelementes (hier Label)
nicht möglich/blockiert. Deswegen nutze z.B. Control.Invoke:

[Bearbeiten von Steuerelementen aus Threads]
http://dzaebel.net/ControlInvoke.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen