.net定时任务如何实现?

冷淡的胖子 2018-03-01 02:07:43
在写某个门户网站时 需要算出每日收益 想通过定时任务来实现
1:首先想到数据库定作业来实现(可是线上数据库没有权限无法解决)
2:换思路想到Global里写Timers,(可是要程序启动时才能执行业务逻辑)
还有一点不懂就是Global里写Timers是不是一定要程序(网站)打开时才能执行业务逻辑
贴一段在网上看来的程序关闭时运行的代码

```
// 在应用程序关闭时运行的代码
protected void Application_End(object sender, EventArgs e)
{
//下面的代码是关键,可解决IIS应用程序池自动回收的问题
Thread.Sleep(1000);

//这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start
string url = "Default.aspx";
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
}
```
不知道这样写是否可行 是否能做到在某一时间算出收益并插入到数据库中
3:后来又想到windows服务来实现,可奈何学疏才浅 这点完全一抹黑
4:想过在控制台中写一个死循环之类的
提问 :希望有比较好的解决方式或思路
如果可以 请贴出代码
先感谢各位!

...全文
739 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷淡的胖子 2018-03-01
  • 打赏
  • 举报
回复
引用 10 楼 sp1234 的回复:
[quote=引用 5 楼 qq_36165603 的回复:] [quote=引用 3 楼 sp1234 的回复:] asp.net 经常被回收,那么 timer 并不连续稳定可靠。 定时任务应该使用 windows 计划任务来注册一个控制台程序,或者你自己的 windows 服务程序中来使用 timer 才可靠。
所以说目前可行的方式是Windows服务 那他能在虚拟主机上跑吗 ?[/quote] 如果你要做企业业务服务,那么别限制于每年300块钱租网站(虚拟主机),你应该每年掏1500块钱租一个强大的全功能服务器(虚拟机)自己随便安装各种应用软件。 虽然虚拟主机和虚拟机只差一个字,价格差别很大,但是别让贫穷限制了程序员的想象力。[/quote] 我们属于一种项目外包的公司 甲方控制成本的同时要实现功能需求还要美观 我们在控制工时的同时还要完成这些需求 至于为什么用虚拟主机 就不言而喻了
  • 打赏
  • 举报
回复
引用 5 楼 qq_36165603 的回复:
[quote=引用 3 楼 sp1234 的回复:] asp.net 经常被回收,那么 timer 并不连续稳定可靠。 定时任务应该使用 windows 计划任务来注册一个控制台程序,或者你自己的 windows 服务程序中来使用 timer 才可靠。
所以说目前可行的方式是Windows服务 那他能在虚拟主机上跑吗 ?[/quote] 如果你要做企业业务服务,那么别限制于每年300块钱租网站(虚拟主机),你应该每年掏1500块钱租一个强大的全功能服务器(虚拟机)自己随便安装各种应用软件。 虽然虚拟主机和虚拟机只差一个字,价格差别很大,但是别让贫穷限制了程序员的想象力。
冷淡的胖子 2018-03-01
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
比如说命令行
schtasks  /create  /tn  testschtask /tr  C:\abc\日结.exe  /sc  DAILY /st  3:00:00
这样每天早上 3 点就自动进行日结工作了。
就是先把“日结.exe ”写好 然后通过命令行去调取这个? 我还是先多了解了解windows服务基础把 谢谢
冷淡的胖子 2018-03-01
  • 打赏
  • 举报
回复
引用 6 楼 hanjun0612 的回复:
[quote=引用 2 楼 qq_36165603 的回复:] [quote=引用 1 楼 hanjun0612 的回复:] 不靠谱的方案。 定时作业,按照你的说法,没办法在数据库创建作业。 那么就跑windows 服务。 把定时作业放在网站里,是很不靠谱的。
windows 服务。有想到过 但是在网上百度的方法完全一抹黑[/quote] 这是windows 服务的安装和卸载 http://blog.csdn.net/hanjun0612/article/details/76040403[/quote] 好的那我看看
正怒月神 版主 2018-03-01
  • 打赏
  • 举报
回复
引用 2 楼 qq_36165603 的回复:
[quote=引用 1 楼 hanjun0612 的回复:] 不靠谱的方案。 定时作业,按照你的说法,没办法在数据库创建作业。 那么就跑windows 服务。 把定时作业放在网站里,是很不靠谱的。
windows 服务。有想到过 但是在网上百度的方法完全一抹黑[/quote] 这是windows 服务的安装和卸载 http://blog.csdn.net/hanjun0612/article/details/76040403
正怒月神 版主 2018-03-01
  • 打赏
  • 举报
回复
引用 2 楼 qq_36165603 的回复:
[quote=引用 1 楼 hanjun0612 的回复:] 不靠谱的方案。 定时作业,按照你的说法,没办法在数据库创建作业。 那么就跑windows 服务。 把定时作业放在网站里,是很不靠谱的。
windows 服务。有想到过 但是在网上百度的方法完全一抹黑[/quote] http://blog.csdn.net/hanjun0612/article/details/78283017
  • 打赏
  • 举报
回复
比如说命令行
schtasks  /create  /tn  testschtask /tr  C:\abc\日结.exe  /sc  DAILY /st  3:00:00
这样每天早上 3 点就自动进行日结工作了。
正怒月神 版主 2018-03-01
  • 打赏
  • 举报
回复
不靠谱的方案。 定时作业,按照你的说法,没办法在数据库创建作业。 那么就跑windows 服务。 把定时作业放在网站里,是很不靠谱的。
冷淡的胖子 2018-03-01
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
asp.net 经常被回收,那么 timer 并不连续稳定可靠。 定时任务应该使用 windows 计划任务来注册一个控制台程序,或者你自己的 windows 服务程序中来使用 timer 才可靠。
所以说目前可行的方式是Windows服务 那他能在虚拟主机上跑吗 ?
  • 打赏
  • 举报
回复
asp.net 经常被回收,那么 timer 并不连续稳定可靠。 定时任务应该使用 windows 计划任务来注册一个控制台程序,或者你自己的 windows 服务程序中来使用 timer 才可靠。
冷淡的胖子 2018-03-01
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
不靠谱的方案。 定时作业,按照你的说法,没办法在数据库创建作业。 那么就跑windows 服务。 把定时作业放在网站里,是很不靠谱的。
windows 服务。有想到过 但是在网上百度的方法完全一抹黑

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧