Best Practice: Правильная обработка отмены. Несмотря на то, что
класс CancellationTokenSource может быть выпущен, его правильный метод выпуска часто сбивает с толку разработчиков. В этой статье изучается подробное, когда и как эффективно выпустить такой вид. ]
] одна из причин этого неясного заключается в том, что в классе
нет финализатора. Это означает, что коллекционер мусора (GC) не может его автоматически освободить. Следовательно, это становится ответственностью разработчика за то, чтобы явно выпустить источник токена. ]
, тем не менее, примеры, приведенные в MSDN, редко упоминают выпуск. Итак, какой метод рекомендуется?
стратегия выпуска
] ]
]Если вы ожидаете выполнения параллельной задачи, вы можете использовать оператор «Использование» для завершения кода. Это гарантирует, что источник токена автоматически выпускается после выполнения задачи: ]
с использованием (CancellationTokenSource tokenSource = new CancellationTokenSource ()) { Task.run (() => {}, tokensource.token); } using (CancellationTokenSource tokenSource = new CancellationTokenSource())
{
Task.Run(() => { }, tokenSource.Token);
}
]
], вы можете зарегистрировать обработчик продолжения событий на задаче и вручную отпустить источник токена в Handler:
task.run (async () => { пытаться { // код задачи } Окончательно { tokensource.dispose (); } }, tokensource.token); Task.Run(async () =>
{
try
{
// 任务代码
}
finally
{
tokenSource.Dispose();
}
}, tokenSource.Token);
Dispose ]
]
]
повторно использование и множественное использование:
]
]
непосредственно выпустить:
] Если вы не можете использовать оператор «Использование» или обработчик событий Continawith, вы можете выпустить источник токена непосредственно после его завершения:
] ]
] CancellationTokenSource tokenSource = new CancellationTokenSource();
Task.Run(() => { }, tokenSource.Token);
// ...
tokenSource.Dispose();
экземпляр необходим для предотвращения утечек памяти и обеспечения правильного управления ресурсами. Следуя рекомендуемой стратегии выпуска, разработчики могут эффективно обрабатывать операции отмены в своем коде. ]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3