Heim > Backend-Entwicklung > C++ > Wie kann man eine WinRT-Aufgabe ordnungsgemäß absagen?

Wie kann man eine WinRT-Aufgabe ordnungsgemäß absagen?

DDD
Freigeben: 2025-01-26 12:56:10
Original
383 Leute haben es durchsucht

How to Properly Cancel an `await`-ing WinRT Task?

Die Aufgabe

effektiv abbrechen await Wenn Sie sich mit der WinRT -Aufgabe befassen, können Sie versuchen, die Methode zu verwenden, um die Aufgabe zu beenden. Dieser Code kann jedoch zu zufälligen Ergebnissen führen, da die Aufgabe auch dann, wenn Sie versuchen zu stornieren, weiterhin abgeschlossen sein. Um diese Grenze zu überwinden und die Aufgabe bei der Stornierung wirklich zu stoppen, befolgen Sie bitte die folgenden Schritte:

Die Funktion der Stornierung der Funktion durch Übergabe des -Objekts wird an Ihre Methode übertragen. Stellen Sie sicher, dass diese Token regelmäßig überprüft werden können. CancelNotification

Das modifizierte Codefragment storniert die Aufgabe wie erwartet effektiv:

CancellationToken

Mithilfe von

-blöcken im -Operationsblock können Sie

verarbeiten und geeignete Maßnahmen ergreifen, um die Auswirkungen der Aufgabenstornierung zu verringern.
<code class="language-csharp">private async Task TryTask()
{
  CancellationTokenSource source = new CancellationTokenSource();
  source.CancelAfter(TimeSpan.FromSeconds(1));
  Task<int> task = Task.Run(() => slowFunc(1, 2, source.Token), source.Token);

  try
  {
    await task;
  }
  catch (OperationCanceledException)
  {
    // 处理取消
  }
}

private int slowFunc(int a, int b, CancellationToken cancellationToken)
{
  string someString = string.Empty;
  for (int i = 0; i < 1000000; i++)
  {
    someString += i.ToString();
    cancellationToken.ThrowIfCancellationRequested(); // 定期检查取消请求
  }
  return a + b;
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man eine WinRT-Aufgabe ordnungsgemäß absagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage