zhaopeiym / quartzui

基于Quartz.NET3.0的定时任务Web可视化管理。docker打包开箱即用、内置SQLite持久化、语言无关、业务代码零污染、支持 RESTful风格接口、傻瓜式配置
MIT License
1.52k stars 418 forks source link

如何解决任务阻塞 #12

Closed ghd258 closed 5 years ago

ghd258 commented 5 years ago

比如我有一个计算排放量的算法,按照不同的参数计算 比如这个排放量是是分部计算100个公司的排放量,我给一百个公司分别设置不同的时间执行调用这个方法,但是传的是不同的公司参数,根据参数计算,这个时候就会遇到如果其中一个公司的还没有算完 下个任务就开始了 由于调用的是同一个方法,只是参数不一样就会造成阻塞 如果解决

zhaopeiym commented 5 years ago

如果你不需要等待执行结果,可以使用异步的方式。如: Task.Run(()=> { //原的的方法 });

ghd258 commented 5 years ago

不太明白 ,您的这个项目里面能做个类似的案例吗

zhaopeiym commented 5 years ago

你的问题的本质是不是 因为定时执行的任务时间过长?

ghd258 commented 5 years ago

是的 比如五分钟一次运行 但是可能五分钟内无法完成本任务

zhaopeiym commented 5 years ago

所以你可以把你的任务用异步的方式去做。

ghd258 commented 5 years ago

就是请教你用异步怎么做 我们尝试过没有成功 您这里是否可以搞个异步的例子 学习一下

zhaopeiym commented 5 years ago

异步的话就和这个工具没有关系了。 是在你的实现代码里面去把请求的方法做成异步。如果是.net 你可以了解下 Task.Run(()=> {});