Die Methode zum Abbrechen der Aufgabe.wait () in C#
Starten Sie in diesem Code
mit einer neuen Thread mit einer Meldungspumpe und führen Sie die Aufgabe im Thread aus. Warten Sie dann, bis die Aufgabe im Haupt -Thread den Haupt -Thread blockiert, bis die Aufgabe abgeschlossen ist. MessageLoopWorker.Run
DoWorkAsync
Um die Aufgabe nach der Zeit zu kündigen, können Sie die
ermöglicht es Ihnen, die Anforderung von einem Thread zu einem anderen zu stornieren. CancellationToken
CancellationToken
Folgendes ist die Methode zum Ändern des Code, um die Aufgabe nach der Überstunden zu stornieren:
In diesem Code erstellen wir eine
<code class="language-csharp">private Uri GetFinalUrl(PortalMerchant portalMerchant) { SetBrowserFeatureControl(); Uri finalUri = null; if (string.IsNullOrEmpty(portalMerchant.Url)) { return null; } Uri trackingUrl = new Uri(portalMerchant.Url); // 创建一个 CancellationTokenSource。 using (CancellationTokenSource cancellationTokenSource = new CancellationTokenSource()) { // 设置 5 秒的超时时间。 using (Timer timer = new Timer(state => cancellationTokenSource.Cancel(), null, 5000, Timeout.Infinite)) { try { // 使用 CancellationToken 启动任务。 var task = MessageLoopWorker.Run(DoWorkAsync, cancellationTokenSource.Token, trackingUrl); // 等待任务完成。 task.Wait(cancellationTokenSource.Token); // 如果任务成功完成,获取结果。 if (!string.IsNullOrEmpty(task.Result?.ToString())) { return new Uri(task.Result.ToString()); } } catch (OperationCanceledException) { // 任务被取消。 } catch (AggregateException ex) { // 处理任务中的其他异常 foreach (var innerException in ex.InnerExceptions) { // Log or handle inner exception appropriately Console.WriteLine($"Inner Exception: {innerException.Message}"); } } } } // 如果任务被取消或失败,则返回 null。 return null; }</code>
-Methode weiter. Wir haben auch einen Timer festgelegt, um das Token nach 5 Sekunden zu stornieren. Wenn die Aufgabe vor der Überstunden erfolgreich abgeschlossen ist, erhalten wir das Ergebnis. Wenn die Aufgabe abgebrochen wird, werden wir CancellationTokenSource
erfassen. Schließlich verwenden wir Anweisungen, um die Ressourcen CancellationToken
und MessageLoopWorker.Run
zu veröffentlichen, um sicherzustellen, dass die Ressourcen ordnungsgemäß verarbeitet werden. Darüber hinaus wird eine OperationCanceledException
-Behandlung hinzugefügt, um andere Anomalien zu erfassen und umzugehen, die in der Mission using
auftreten können. CancellationTokenSource
Timer
Diese verbesserte Version verwendet AggregateException
Anweisungen für die ordnungsgemäße Ressourcenverwaltung, um Ressourcenlecks zu verhindern
Das obige ist der detaillierte Inhalt vonWie storniere ich eine Aufgabe. Wait () nach einer Auszeit in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!