2881099 / FreeScheduler

轻量化定时任务调度,支持集群、临时的延时任务和重复循环任务(可持久化),可按秒,每天/每周/每月固定时间,自定义间隔执行,支持 .NET Core 2.1+、.NET Framework 4.0+ 运行环境。
303 stars 50 forks source link

_scheduler 找回 #18

Open alanchen78 opened 1 year ago

alanchen78 commented 1 year ago

我是用FreeScheduler 做一个硬件信息的采集任务。
.net web 页面执行后,开始任务_scheduler,关了页面任务还是在执行,这很好,可是如果我改动了页面代码,重新上传到服务器。 这时:_scheduler 已经为null 了。 但网站的任务_scheduler还在线程里运行。 我如何在不重新IIS的情况下,中止或操作运行中的其中一个任务。这感谢是一个编程的问题,如果你知道,还请帮忙指导一下。

alanchen78 commented 1 year ago

如果我再创建一个_scheduler进行操作(比如删除一个任务),由于原来的任务还是在运行,任务数据已经变化了,就会任务数据错乱。

2881099 commented 1 year ago

_scheduler 用 static 单例,不会出现这种问题。

不要在 IIS 下部署定时任务,因一段时间不操作可能被 IIS 回收 .net web 应用,导致定时任务不触发。

//暂停任务
scheduler.PauseTask(id);
//恢复暂停的任务
scheduler.ResumeTask(id);
//删除任务
scheduler.RemoveTask(id);
//立刻运行任务(人工触发)
scheduler.RunNowTask(id);
alanchen78 commented 1 year ago

好的,谢谢你的回复! 另一个问题,如何让应用跑得更快点. 比如我有800个任务并行,都是1秒一次(每个任务执行需要80毫秒左右)。 我看服务器CPU、内存使用率都很低。但任务1秒平均执行30个左右。 可以强制多开点并行线程吗?

2881099 commented 1 year ago

默认30个线程,暂时没有开放设置。

另外,800个任务都是一秒,何不考虑做成一个任务。

alanchen78 commented 1 year ago

收到。收到!

alanchen78 commented 1 year ago

你好。参考你的办法。确实改善了很多。通过测试更多的并行任务明显效率更好。并且在IIS里也能很好的运行(目前最长测试是5天正常运行)。 不知道是不是可以提供更多线程的版本使用(目前听你说是30线程)。我看正常的电脑运行30线程,基本不消耗什么资源。所以提升3-5倍线程是不是也可以很轻松运行呢。

alanchen78 commented 1 year ago

我在任务执行里,再次开起多个并行Task,会有什么潜在问题吗?感觉速度可以成倍增加了。 taskList[i] = new Task(() => { readDataRow(dr); //单个实际任务

            });
alanchen78 commented 1 year ago

不好意思,我搞错了。上面这样并不能增加速度。:(