【发布时间】:2020-03-20 14:32:14
【问题描述】:
上下文:我们的任务可能需要 30 秒到 5 分钟,具体取决于我们在某些 Azure Functions 中使用的服务。
我们计划监控该任务对象的当前状态,以确保它正在运行并且没有被取消/出错。
有两种方法可以绕过它:
- 创建一个任务,运行它,然后在主任务完成后取消它。或者,也可以将 Task.Delay 与带有条件的一段时间一起使用。
- 创建一个线程,运行它并等待它完成(带有一个 while 条件以避免永远运行的一段时间)。
我们进行了一些研究,并意识到两者各有利弊。但我们仍然不确定哪种方法是最好的方法以及为什么。
在类似的情况下,您会使用什么?任务、线程还是其他?
【问题讨论】:
-
是由人工操作还是由程序监控?如果它是一个程序,那么您既不需要监视线程也不需要任务。只需为主要任务的完成附加一个延续。
-
这只是一个while循环记录信息,所以不,没有复杂的监控。
-
所以有一个日志例程,每 5 分钟写入一个日志文件“任务正在运行”或“任务已完成”?
-
或多或少,就是这样,是的。
标签: c# multithreading task