Для запускать и забывать или длительные операции лучшее решение - использовать шину сообщений в качестве промежуточного программного обеспечения, которое будет обрабатывать эту зависимость между обоими процессами.
Чтобы сделать то, что вы хотите без промежуточного программного обеспечения, вашему абоненту придется беспокоиться о многих вещах, таких как: тайм-ауты (как в вашем случае), гарантия доставки (подтверждение), доступность услуг, исключения и т. Д.
При использовании промежуточного программного обеспечения единственное беспокойство, в котором нуждается логика вашего приложения, - это гарантия доставки, остальное должно обрабатываться промежуточным программным обеспечением и получателем.
Существует много вариантов, например:
- служебная шина Azure
- очередь хранилища Azure
- MSMQ
- Концентратор событий
- и т. Д.
Я бы не советовал использовать обходные пути SF Communication, Task.Run (), Threads, как предлагают многие места, потому что они просто принесут вам дополнительную работу и не будут работать так гладко, как подход промежуточного уровня.