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

来源:百度知道 编辑:UC知道 时间:2024/06/08 09:22:02
最近用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();
}
-----------------
检查一下你的错误日志文件的大小,看是不是太大了
---------

1.可能是数据缓冲区不够,导致执行一段时间后就出现假死。
2.不知道你Cal.Calc(datastr)这个方法中是否使用了多线程,如果是,可能是内存使用太多或耗尽,也可能是在循环的过程中开辟的线程太多但没有终止,出现假死,线程冲突而导致数据传输的出错
3.如果没有使用多线程,那可能就是主线程假死了。。。

支持同一个客户的多次访问和不同客户的顺序访问,但不支持多个不同客户的同时访问。要支持多个客户的同时访问,必须使用多线程,每个线程处理对应每一个请求。

你写服务的什么方法里了?

检查一下你的错误日志文件的大小,看是不是太大了