我用c#写的 windows服务为什么过一段时间就不执行了

最近用c#写了一个windows服务部署到服务器上,可是最近发现每次启动服务不到一天的时间就不执行程序了,而且服务也不停止,等到下次再启动服务,处理的数据就会出错,这是为... 最近用c#写了一个windows服务部署到服务器上,可是最近发现每次启动服务不到一天的时间就不执行程序了,而且服务也不停止,等到下次再启动服务,处理的数据就会出错,这是为什么,急。等待高人指点。

不知道和端口有没有关系,部分代码

------------------------------------------------------------------------------

IPAddress ServerIp = IPAddress.Parse("127.0.0.1");
IPEndPoint iep = new IPEndPoint(ServerIp, 21088);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(iep);
byte[] byteMessage = new byte[6300];
while (true)
{
try
{
socket.Listen(5);
Socket newSocket = socket.Accept();
newSocket.Receive(byteMessage);
string datastr = Encoding.Default.GetString(byteMessage);
//计算
Cal.Calc(datastr);
}

catch (Exception ed)
{
StreamWriter fd = File.AppendText("D:/emposServices.txt");
fd.Write("xx" + ed.Message);
fd.Close();
}
-----------------
检查一下你的错误日志文件的大小,看是不是太大了
--------------
没啊,10几K
------------------------

---------------------------
没有子线程,就一个主线程,这样,我这个服务支不支持几十个客户端同时访问
展开
 我来答
wang_bao_jun
2009-09-24
知道答主
回答量:30
采纳率:0%
帮助的人:17.3万
展开全部
1.可能是数据缓冲区不够,导致执行一段时间后就出现假死。
2.不知道你Cal.Calc(datastr)这个方法中是否使用了多线程,如果是,可能是内存使用太多或耗尽,也可能是在循环的过程中开辟的线程太多但没有终止,出现假死,线程冲突而导致数据传输的出错
3.如果没有使用多线程,那可能就是主线程假死了。。。

支持同一个客户的多次访问和不同客户的顺序访问,但不支持多个不同客户的同时访问。要支持多个客户的同时访问,必须使用多线程,每个线程处理对应每一个请求。
素菁闾雨安
2020-05-17 · TA获得超过3802个赞
知道大有可为答主
回答量:3118
采纳率:33%
帮助的人:216万
展开全部
要关服务器,在fd.Close();后面再添加一个关闭服务器:socket
.Close();当然不关服务器就会浪费资源,这样添一个关闭,就可以随开随关,可以执行很久啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dragon2snow
2009-09-23 · TA获得超过1099个赞
知道小有建树答主
回答量:1150
采纳率:0%
帮助的人:1136万
展开全部
你写服务的什么方法里了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LifeRushing
2009-09-23 · TA获得超过786个赞
知道小有建树答主
回答量:861
采纳率:0%
帮助的人:506万
展开全部
检查一下你的错误日志文件的大小,看是不是太大了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式