Исходный код вики Сценарии
Редактировал(а) Alexandr Fokin 2024/04/22 12:09
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 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" %) |