Источник завершения задачи C # - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть требование с постановкой задачи, как, скажем, когда срабатывает событие, я должен вызвать источник завершения задачи, используя async и await. Будет происходить несколько событий, и каждый раз, когда происходит событие, должно вызываться завершение задачи. (Также будет несколько задач, которые будут выполняться, и повышение уровня выполнения этой задачи)

Скажем, например, Есть геометрические фигуры и пробелы, соответствующие этим фигурам. Когда эти формы объектов помещаются в это пространство, должно сработать событие, которое вызывает источник завершения задачи.

Итак, вы хотите реализовать программу, которая использует источник завершения задачи, основываясь на произошедших событиях, внедрении зависимостей, системных событиях / уведомлениях, а также для проверки завершенных или нет событий (для нескольких событий).

Надеюсь, с требованиями все понятно, но поскольку постановка задачи не так уж и сложна, так как включает в себя множество концепций TPL Async, которые я постарался объяснить наилучшим образом, я привел аналогию с игрой фигур выше.

Любые полезные предложения / ссылки / рекомендации будут великолепны.

Заранее спасибо !!! ..

1 Ответ

0 голосов
/ 03 апреля 2019

Источник завершения задачи может быть выполнен только один раз.Для вашего случая это не похоже на правильное решение.Взгляните на SemaphoreSlim, который поддерживает асинхронность и не зависит от потока.Это позволит вам освобождать ожидающий поток (WaitAsync) каждый раз, когда происходит событие (фигура помещается в пробел).

https://docs.microsoft.com/en-us/dotnet/api/system.threading.semaphoreslim?view=netframework-4.7.2

...