Исходный код вики Сценарии

Редактировал(а) Alexandr Fokin 2024/04/22 12:09

Последние авторы
1 |(% style="width:147px" %)Запустить задачу сейчас|(% style="width:684px" %){{code language="c#"}}public async Task TryRunNowWorkerAsync(
2 string name,
3 CancellationToken cancellationToken
4 )
5 {
6 var jobKey = /* .. */;
7
8 // Проверка кол-ва сузествующих триггеров,
9 // если их больше определенного кол-ва,
10 // то нет смысла создавать еще один триггер-запуска.
11 {
12 var triggers = await scheduler.GetTriggersOfJob(jobKey, cancellationToken);
13 if (triggers.Count > n)
14 {
15 return;
16 }
17 }
18
19 // Создает триггер одноразового запуска.
20 await scheduler.TriggerJob(jobKey, cancellationToken);
21 }{{/code}}|(% style="width:658px" %)При InMemory хранилище внутри используются блокировки.
22 Поэтому при высокой интенсивности лучше сделать отдельный поток (Task), который будут накапливать заявки и периодически запускаться.
23 При этом так, чтобы запись заявки была быстрой и неблокирующей.
24 |(% style="width:147px" %) |(% style="width:684px" %) |(% style="width:658px" %)
25 |(% style="width:147px" %) |(% style="width:684px" %) |(% style="width:658px" %)