Использование токена аннулирования в сервисной матрице - PullRequest
0 голосов
/ 22 октября 2019

Я создал приложение Service Fabric. В методе RunAsync () существует долгосрочное задание, например «LoadData (), которое переносит миллионы записей из базы данных в словарь ServiceFabric».

Согласно документации MSDN, службы, которые хотят реализовать фоновую задачу, который запускается при запуске службы, должен переопределить этот метод с помощью своей логики «RunAsync (CancellationToken)» *

Маркер отмены используется для отслеживания запросов на отмену, существует из RunAsync () и закрывает службу. Так что я использовал CancellationToken в моем проекте.

Вот мой код

RunAsync (System.Threading.CancellationToken cancellationToken);
{
 LoadData(CancellationToken);
}
Async Task LoadData(CancellationToken)
{
 Method1(CancellationToken) -- Aync call
 Method2() -- Normal call
 Method3() -- Normal call
}

Как вы можете видеть, у меня есть Method1, который является асинхронным вызовом, и он работает как отдельный поток, так чтоэтот же токен передается этому методу, так как основной поток не будет знать о дочернем потоке. Однако Method2 и Method3 являются просто функциональными вызовами, поэтому CancellationToken не передается, поскольку они выполняются в контексте основного потока.

У меня есть пара вопросов по использованию CancellationToken в Service Fabric. 1. Нужно ли передавать CancellationToken для всех методов, которые вызываются из долгосрочного метода (Async / Sync)? 2. То, как я обработал CancellationToken, правильно или мне нужно что-то изменить?

...