Ich implementiere System.Web.UI.IPostBackEventHandler
auf einer meiner Klassen und im Körper meiner Implementierung von void RaisePostBackEvent (string eventArgument) I am calling a method using the
async ... erwarten `Syntax. Z.B.Schnittstellenimplementierungen asynchron machen
public void RaisePostBackEvent(string eventArgument)
{
if (eventArgument.Equals("deq1"))
{
Result result = await SaveDataAsync();
OnSaved();
}
}
erzeugt jedoch den Fehler:
CS4033 - The 'await' operator can only be used within an async method
Die Frage: Making interface implementations async ein fast identisches Problem Mine beschreibt, mit dem wesentlichen Unterschied ist, dass die Schnittstelle durch die OP umgesetzt war unter seiner Kontrolle, und die accepted answer war zu ändern void DoSomething()
auf der Schnittstelle zu Task DoSomething()
. Ich kann jedoch nicht die IPostBackEventHandler
ändern, da es Teil des .NET Framework ist.
Irgendwelche Vorschläge, wie Sie das auf sichere Weise lösen können?
Was passiert, wenn während des Speichervorgangs eine Ausnahme auftritt? Wie könnte ich damit umgehen? –
Sie möchten es auf die gleiche Weise behandeln? Probieren Sie einfach einen Fang. Sie können innerhalb des Versuchs warten verwenden. – pomber
Aufruf von OnSaved() ist keine gute Idee. Siehe Stephen Cleary Antwort in [this] (http://stackoverflow.com/questions/19415646/should-i-avoid-async-void-event-handlers) SO Frage und [diese] (https://msdn.microsoft. com/de-de/magazin/jj991977.aspx) MSDN-Seite. –