Ich machte eine einfache asynchrone Methode für eine Lade-Animation, während Code ausgeführt wird. Der Code, der ausgeführt wird, fügt dem Stackpanel Steuerelemente hinzu.STA für nicht erstellt Thread/Aufgabe
in PAGE_LOADED Ereignis Ich habe gerade:
Test();
In Test() Ich habe
private async void Test()
{
testbtn.Visibility = Visibility.Visible;
await Task.Run(() => LoadAll());
testbtn.Visibility = Visibility.Collapsed;
}
und in LoadAll() sind DockPanels usw. für exmaple:
DockPanel headerpanel = new DockPanel();
headerpanel.LastChildFill = false;
Wenn dies ausgeführt wird, erhalte ich einen Fehler, weil der Thread kein STA-Thread ist. Wie kann ich es STA machen, auch wenn ich keinen Thread erstellt habe. (nur await Task.Run(() => LoadAll());
)
Muss ich einen großen Thread usw. nur für eine einfache Animationsleiste erstellen, während der Code läuft?
Das Markieren eines Threads als STA ist ein * Versprechen *. Die Art von Versprechen, die eine Aufgabe niemals richtig erfüllen kann. Das Versprechen zu brechen, kann übermäßig unangenehme Nebenwirkungen haben, die zum Beispiel den Finalizer-Thread blockieren. –