当我单击Windows服务区域中的“停止"按钮时,为什么服务没有停止? [英] Why doesn't my service stop when i click the stop button in the windows services area?
本文介绍了当我单击Windows服务区域中的“停止"按钮时,为什么服务没有停止?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
using System;
using System.Net;
using System.Collections.Generic;
using System.ServiceProcess;
using System.IO;
using System.Threading;
using System.Net.Sockets;
using System.Text;
namespace C_AService
{
public partial class C_AServiceListener
{
private const int listnerPort = 55000;
bool continueListener;
StreamWriter ca_StreamWriter;
FileStream fs;
public static int Main(string[] args)
{
C_AServiceListener caService = new C_AServiceListener();
Thread oThread = new Thread(new ThreadStart(caService.RetrieveMessage));
caService.RetrieveMessage();
// Start the thread
caService.ContinueListener = true;
oThread.Start();
// Request that oThread be stopped
caService.ContinueListener = false;
// Wait until oThread finishes. Join also has overloads
// that take a millisecond interval or a TimeSpan object.
oThread.Join();
return 0;
}
public C_AServiceListener()
{
continueListener = false;
fs = new FileStream(@"C:\Users\Tim Hein\Desktop\Hardware Devices\Cal-Amp\C-AServices.txt",
FileMode.OpenOrCreate, FileAccess.Write);
ca_StreamWriter = new StreamWriter(fs);
ca_StreamWriter.BaseStream.Seek(0, SeekOrigin.End);
if (fs.CanWrite)
{
ca_StreamWriter.WriteLine("Service Started: " + DateTime.Now.ToShortDateString()
+ " at " + DateTime.Now.ToShortTimeString());
}
else
{
throw new Exception("Failed: Can''t Write.");
}
}
~C_AServiceListener()
{
ca_StreamWriter = null;
}
public bool ContinueListener
{
get { return continueListener; }
set { continueListener = value; }
}
public void RetrieveMessage()
{
UdpClient ca_Listener = new UdpClient(listnerPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listnerPort);
bool done = false;
ca_StreamWriter.BaseStream.Seek(0, SeekOrigin.End);
try
{
while (!done)
{
ca_StreamWriter.WriteLine("Waiting for connection.....");
byte[] bytes = ca_Listener.Receive(ref groupEP);
ca_StreamWriter.WriteLine("Listener Started");
ca_StreamWriter.WriteLine("Received Broadcast from {0} :\n {1}\n",
groupEP.ToString(), Encoding.ASCII.GetString(bytes, 0, bytes.Length));
}
ca_StreamWriter.WriteLine("Connection Closed");
}
catch (Exception e)
{
ca_StreamWriter.WriteLine("Listener Exception: {0}", e);
}
finally
{
//Stop listening
ca_Listener.Close();
}
ca_StreamWriter.WriteLine("Listener Shutting Down");
ca_StreamWriter.Flush();
}
}
}
推荐答案
首先猜测-您永远不会在while
循环中将done
设置为true
.
First guess - you''re never settingdone
totrue
in thewhile
loop.
这篇关于当我单击Windows服务区域中的“停止"按钮时,为什么服务没有停止?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文