Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

_scheduler 找回 #18

Open
alanchen78 opened this issue Oct 20, 2022 · 10 comments
Open

_scheduler 找回 #18

alanchen78 opened this issue Oct 20, 2022 · 10 comments

Comments

@alanchen78
Copy link

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

@alanchen78
Copy link
Author

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

@2881099
Copy link
Owner

2881099 commented Oct 20, 2022

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

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

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

@alanchen78
Copy link
Author

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

@2881099
Copy link
Owner

2881099 commented Oct 20, 2022

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

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

@alanchen78
Copy link
Author

收到。收到!

@alanchen78
Copy link
Author

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

@alanchen78
Copy link
Author

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

            });

@alanchen78
Copy link
Author

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

@Jess-Qiu
Copy link

Jess-Qiu commented Nov 19, 2024

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

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

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

有个疑问,我在暂停任务中调用已经正在执行的任务id,但是该任务没有终止掉

@2881099
Copy link
Owner

2881099 commented Nov 21, 2024

@Jess-Qiu 确定代码是否被执行了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants