All UI-Ereignisse mitdie Current Set schlug fehl, wenn in Winform
ich ein Problem getroffen, als ich Thread.CurrentPrincipal auf einer WinForm Anwendung zu setzen versucht.
Es gibt zwei Schaltflächen auf Form, Button1 und Button2. Button1 setzt den Thread.CurrentPrincipal und Button2 zeigt den CurrentPrincipal. Bis jetzt läuft alles gut.
private void button1_Click(object sender, EventArgs e)
{
SetPermission();
}
private void SetPermission()
{
Thread.CurrentPrincipal = new MyPrinciple() { User = "xxxx" };
}
private void button2_Click(object sender, EventArgs e)
{
Console.WriteLine("Tread principal:{0},{1}", Thread.CurrentThread.Name, Thread.CurrentPrincipal.ToString());
}
Dann habe ich einen Code geändert. Ich möchte den Principal einmal festlegen Form gezeigt.So habe ich ein Ereignis auf Form.Shown hinzugefügt.
Wenn ich auf den Button2 klicke, um das Prinzip zu zeigen, habe ich nichts gesehen.
Ich habe versucht, den Prinzipal auf den Konstruktor des Formulars festzulegen. Dann habe ich das Ergebnis erwartet, als ich auf Button2 geklickt habe.
public Form1()
{
InitializeComponent();
//this.Shown += Form1_Shown;
SetPermission();
}
Ich suchte auf Google, Inzwischen habe ich keine Ahnung davon. Was ist der Unterschied zwischen diesen beiden Wegen?
Vielen Dank.
haben Sie SetPermissio testen() zu verwenden, ohne Dispatcher.CurrentDispatcher.Invoke (..) nennen? – Wolfgang
Ja, dasselbe Ergebnis. Kann das Prinzip nicht bekommen. –
Hm .. gibt es einen Fehler? welche? Oder wird der Handler oder SetPermision() nicht ausgeführt? Beachten Sie, dass das Shown-Ereignis nur einmal ausgelöst wird - beim ersten Anzeigen eines Formulars. – Wolfgang