asynchrones Programmieren wird in der C#-entwicklung immer beliebter. Manchmal begegnen Sie auf die Situation, die asynchrone Methoden aus dem Synchronisationskontext aufrufen muss. Obwohl dies normalerweise durch asynchrone Methoden implementiert wird, werden in diesem Artikel verschiedene Methoden erörtert, die zu dieser Lücke gebracht wurden.
Methode 1: Verwenden Sie Task.waitandunwrapexception
Wenn Ihre asynchrone Methode einfach ist und nicht mit ihrem Kontext synchronisiert werden muss, können Sie Task verwenden. Diese Methode löst alle Anomalien, die während des asynchronen Betriebs auftreten können.
Methode 2: Verwenden Sie asynccontext.runtask
<code class="language-csharp">var task = MyAsyncMethod(); var result = task.WaitAndUnwrapException();</code>
Für die Methode, die mit dem Kontext synchronisiert werden muss, können Sie asynccontext.runtask verwenden, um einen verschachtelten Kontext zu erstellen. Standardmäßig verkauft Asynccontext den aktuellen Kontext der Synchronisation. Es kann jedoch auf einen beliebigen Kontext angewendet werden.
Methode 3: Verwenden Sie Task.run
<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>
Vorsichtsmaßnahmen
Wenn Sie diese Methoden verwenden, denken Sie bitte an die folgenden Punkte:
<code class="language-csharp">var task = Task.Run(async () => await MyAsyncMethod()); var result = task.WaitAndUnwrapException();</code>
Methoden gilt nur für die Methode, für die keine Kontextsynchronisation erforderlich ist.
Methode 2 Wenn die asynchrone Methode auf den UI -Vorfall wartet, kann dies zu einer Sackgasse führen.Methode drei erfordert, dass asynchrone Methoden im Kontext mit mehreren Threads ordnungsgemäß betrieben werden.
Das obige ist der detaillierte Inhalt vonWie nenne ich asynchrone Methoden aus Synchroncode in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!