Heim Backend-Entwicklung C++ Wann und wie sollte ich eine CancellationTokenSource entsorgen?

Wann und wie sollte ich eine CancellationTokenSource entsorgen?

Jan 19, 2025 am 11:31 AM

When and How Should I Dispose of a CancellationTokenSource?

Best Practice: Mit CancellationTokenSource richtig umgehen

CancellationTokenSource Obwohl Klassen freigegeben werden können, verwirrt die richtige Art der Freigabe Entwickler oft. In diesem Artikel wird erläutert, wann und wie diese Klasse effektiv veröffentlicht werden kann.

Einer der Gründe für diese Unklarheit ist, dass die Klasse CancellationTokenSource keinen Finalizer hat. Dies bedeutet, dass der Garbage Collector (GC) ihn nicht automatisch freigeben kann. Daher liegt es in der Verantwortung des Entwicklers, die Tokenquelle explizit freizugeben.

Trotzdem werden in den auf MSDN bereitgestellten Beispielen Releases selten erwähnt. Was ist also der empfohlene Ansatz?

Release-Strategie

  1. Verwenden Sie „using“-Anweisungen, wenn Sie auf den Abschluss von Aufgaben warten: Wenn Sie auf den Abschluss paralleler Aufgaben warten, können Sie Ihren Code mit einer „using“-Anweisung umschließen. Dadurch wird sichergestellt, dass die Token-Quelle nach Abschluss der Aufgabe automatisch freigegeben wird:

     using (CancellationTokenSource tokenSource = new CancellationTokenSource())
     {
         Task.Run(() => { }, tokenSource.Token);
     }
    Nach dem Login kopieren
  2. Verwenden Sie ContinueWith und manuelle Freigabe: Alternativ können Sie einen ContinueWith-Ereignishandler für die Aufgabe registrieren und die Tokenquelle im Handler manuell freigeben:

     Task.Run(async () =>
     {
         try
         {
             // 任务代码
         }
         finally
         {
             tokenSource.Dispose();
         }
     }, tokenSource.Token);
    Nach dem Login kopieren
  3. Abbrechbare PLINQ-Abfragen: Für abbrechbare PLINQ-Abfragen, die nicht synchron zurückgegeben werden, besteht die empfohlene Vorgehensweise darin, alle Vorgänge im CancellationTokenSource-Ereignishandler auszuführen. Dispose

  4. Wiederverwendbarkeit und Mehrfachnutzung: Instanzen sind nicht wiederverwendbar. Sie sollten für jeden Stornovorgang erstellt und freigegeben werden. CancellationTokenSource

  5. Direkt freigeben: Wenn Sie keine „using“-Anweisung oder einen ContinueWith-Ereignishandler verwenden können, können Sie die Tokenquelle direkt freigeben, nachdem sie ihren Zweck erfüllt hat:

     CancellationTokenSource tokenSource = new CancellationTokenSource();
     Task.Run(() => { }, tokenSource.Token);
     // ...
     tokenSource.Dispose();
    Nach dem Login kopieren

Zusammenfassung

Das Freigeben von

Instanzen ist entscheidend, um Speicherlecks zu verhindern und eine ordnungsgemäße Ressourcenverwaltung sicherzustellen. Durch die Einhaltung der empfohlenen Release-Strategie können Entwickler Abbruchvorgänge in ihrem Code effizient handhaben. CancellationTokenSource

Das obige ist der detaillierte Inhalt vonWann und wie sollte ich eine CancellationTokenSource entsorgen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

See all articles