«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Когда и как я должен избавиться от отмены

Когда и как я должен избавиться от отмены

Опубликовано в 2025-02-06
Просматривать:585

When and How Should I Dispose of a CancellationTokenSource?

Best Practice: Правильная обработка отмены. Несмотря на то, что

класс CancellationTokenSource

может быть выпущен, его правильный метод выпуска часто сбивает с толку разработчиков. В этой статье изучается подробное, когда и как эффективно выпустить такой вид. ] ] одна из причин этого неясного заключается в том, что в классе

CancellationTokenSource

нет финализатора. Это означает, что коллекционер мусора (GC) не может его автоматически освободить. Следовательно, это становится ответственностью разработчика за то, чтобы явно выпустить источник токена. ] , тем не менее, примеры, приведенные в MSDN, редко упоминают выпуск. Итак, какой метод рекомендуется?

]

стратегия выпуска

] ]

]
  1. используйте оператор «Использование» при ожидании выполнения задачи:

    Если вы ожидаете выполнения параллельной задачи, вы можете использовать оператор «Использование» для завершения кода. Это гарантирует, что источник токена автоматически выпускается после выполнения задачи: ]

    с использованием (CancellationTokenSource tokenSource = new CancellationTokenSource ()) { Task.run (() => {}, tokensource.token); }
     using (CancellationTokenSource tokenSource = new CancellationTokenSource())
     {
         Task.Run(() => { }, tokenSource.Token);
     }
    ]
  2. Использовать продолжение и ручное выпуск:

    ], вы можете зарегистрировать обработчик продолжения событий на задаче и вручную отпустить источник токена в Handler:

    task.run (async () => { пытаться { // код задачи } Окончательно { tokensource.dispose (); } }, tokensource.token);
     Task.Run(async () =>
     {
         try
         {
             // 任务代码
         }
         finally
         {
             tokenSource.Dispose();
         }
     }, tokenSource.Token);
  3. отмену plinq Query:
  4. для Unsynchronized Unseducted Plinq Запрос Plinq, рекомендуемый метод должен выполнять в

    Dispose ] ] ] повторно использование и множественное использование:

    uncellationTokenSource
  5. экземпляр не используется. Они должны быть созданы и выпущены для каждой операции отмены.
  6. ]

    ] ] непосредственно выпустить: ] Если вы не можете использовать оператор «Использование» или обработчик событий Continawith, вы можете выпустить источник токена непосредственно после его завершения:

    ]
  7. cancellationTokenSource tokenSource = new CancellationTokenSource (); Task.run (() => {}, tokensource.token); // ... tokensource.dispose ();

    ] ]

    ]
     CancellationTokenSource tokenSource = new CancellationTokenSource();
     Task.Run(() => { }, tokenSource.Token);
     // ...
     tokenSource.Dispose();
  8. release
cancellationtokensource

экземпляр необходим для предотвращения утечек памяти и обеспечения правильного управления ресурсами. Следуя рекомендуемой стратегии выпуска, разработчики могут эффективно обрабатывать операции отмены в своем коде. ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3