C# windows服务中使用线程的问题

[复制链接]
查看11 | 回复10 | 2021-1-27 07:20:01 | 显示全部楼层 |阅读模式
先贴出代码示例:
publicpartialclassService1:ServiceBase
{
publicService1()
{
InitializeComponent();
}

protectedoverridevoidOnStart(string[]args)
{
Process.Start();
}

protectedoverridevoidOnStop()
{
using(System.IO.StreamWritersw=newSystem.IO.StreamWriter("C:\\log.txt",true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-ddHH:mm:ss")+"Service:Stop.");
}
}
publicstaticclassProcess
{
publicstaticvoidStart()
{
ThreadStartstart=newThreadStart(ThreadAction);
Threadth=newThread(start);
th.IsBackground=true;
th.Start();
}

publicstaticvoidThreadAction()
{
while(true)
{
try
{
//dosomething
}
catch(Exceptionex)
{
using(System.IO.StreamWritersw=newSystem.IO.StreamWriter("C:\\log.txt",true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-ddHH:mm:ss")+"Service:Start.错误"+ex.ToString());
}
}
}
}
}
}
问题是:当我在try中执行代码的时候,如果出现错误:比如“远程服务器返回错误:(500)内部服务器错误。”或者“操作超时”,,他就会不停的记录日志,每秒钟都记录很多很多!!!导致日志文件没几天就变得很大!!!!!!求前辈们指教!!!这个问题怎么解决?????
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
可以按时间删除,比如只保留7天的日志
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
做个计划任务定时删除log
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
学会用log4net这个组件吧少年。这个组件可以覆盖前面的错误日志。你这种记录方法,硬盘都给你沾满了。
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
谁让你没事写什么whlie(true)
主要是设计上你就没考虑,某个时候别人站点都已经宕机或者你的网络出问题了,你还在死循环继续请求后面的页面?
出错了之后也没个错误恢复机制什么的,不管不顾继续搞
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
引用4楼dongxinxi的回复:谁让你没事写什么whlie(true)
主要是设计上你就没考虑,某个时候别人站点都已经宕机或者你的网络出问题了,你还在死循环继续请求后面的页面?
出错了之后也没个错误恢复机制什么的,不管不顾继续搞


对这个东西本来就不会写,这段代码是在网上找的,我在catch中让线程sleep,为什么有时候可用,有时候不可用呢?
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
引用5楼gaiyi09的回复:Quote: 引用4楼dongxinxi的回复:
谁让你没事写什么whlie(true)
主要是设计上你就没考虑,某个时候别人站点都已经宕机或者你的网络出问题了,你还在死循环继续请求后面的页面?
出错了之后也没个错误恢复机制什么的,不管不顾继续搞


对这个东西本来就不会写,这段代码是在网上找的,我在catch中让线程sleep,为什么有时候可用,有时候不可用呢?

你如果懒得考虑“设计”,懒得规划蓝图,那就不要自己“设计”程序。找个单位,让单位管理自己,领导让你写什么就写几条语句。
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
引用2楼FoxDave的回复:做个计划任务定时删除log
不错不错,不用费脑考虑修改代码,能解决问题的方法就是好方法……
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
引用6楼sp1234的回复:Quote: 引用5楼gaiyi09的回复:
Quote: 引用4楼dongxinxi的回复:
谁让你没事写什么whlie(true)
主要是设计上你就没考虑,某个时候别人站点都已经宕机或者你的网络出问题了,你还在死循环继续请求后面的页面?
出错了之后也没个错误恢复机制什么的,不管不顾继续搞


对这个东西本来就不会写,这段代码是在网上找的,我在catch中让线程sleep,为什么有时候可用,有时候不可用呢?

你如果懒得考虑“设计”,懒得规划蓝图,那就不要自己“设计”程序。找个单位,让单位管理自己,领导让你写什么就写几条语句。

你厉害……你站在海拔很高的山顶对山脚下的人喊怎么上来,山脚下的人听得到么!
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
引用3楼meiguo520的回复:学会用log4net这个组件吧少年。这个组件可以覆盖前面的错误日志。你这种记录方法,硬盘都给你沾满了。
学习一下,谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行