Windows 8 - warten auf die Aufgabe<Bool> - async-Aufruf wieder auf abgeschlossen Zuhörer erforderlich
Ich habe eine Funktion welche eine Datei öffnet, die aus dem Speicher und kehrt einen booleschen angegeben, dass die Datei geöffnet einwandfrei.
private async Task<bool> SaveImage()
{
try
{
await filesave.openAsync(FileAccessMode.ReadWrite)
}
catch()
{
return false;
}
return true;
}
Möchte ich nennen, die erwarten SaveImage () - Funktion, aber irgendwie wollen die einen listener/event-handler, die sagt mir, wenn dies abgeschlossen.. nach der Fertigstellung habe ich aktualisieren wollen mein layout mit neuen Daten. Wie ist das möglich mit der neuen WINRT-async/await-async-Methode für windows 8? ist es ein umgehen/ersetzen.
Wie kann ich setup eine event-handler-Art-Szenario? (komplett)
InformationsquelleAutor user849953 | 2012-08-06
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nur
await
rufen Sie Ihre Methode, und Folgen Sie es mit den code, der ausgeführt werden soll, wenn es fertig ist. Sie nicht brauchen, um manuell die Registrierung eines Ereignishandlers.Natürlich, da der obige code verwendet die
await
Schlüsselwort, es muss in eine Methode, die auch markiertasync
. Wenn diese Methode muss das signal seiner Fertigstellung seine Anrufer, dann sollte es auch wieder einTask
oderTask<T>
; zum Beispiel:Oder, wenn die Methode aufrufen
SaveImage
ist das Ende der Zeile -- sagen, es ist der handler fürButton
'sClick
event -- dann kann es seinasync void
:InformationsquelleAutor Joe White
Joe ' s Antwort sieht toll aus, aber wenn Sie darauf bestehen, mit einem Ereignis - zum Beispiel, wenn Sie Ihre SaveImage () - Aufrufe sind in verschiedenen Bereichen der code unabhängig von der Aktualisierung des layout - Sie können nur erhöhen ein Ereignis, wenn Ihre operation abgeschlossen ist. Sie können die plain old CLR events, oder verwenden Sie eine pub-sub-pattern Umsetzung wie die EventAggregator von Prism oder Messenger von MVVM Light. Die POCE-version könnte so Aussehen
InformationsquelleAutor Filip Skakun
Dauert dies ein wenig mehr code, ist aber ein SEHR Cooler und nützlicher Umgang mit asynchronen Operationen, Fortschritte, Stornierungen und vollständigen Zustand im Allgemeinen. Diese wurden in einem VS2012 Winrt-Store-App und ich habe es aus eine Schaltfläche klicken, wie Sie hier sehen.
InformationsquelleAutor CodeChops