我一直在用C#试验UDP发送和接收,并且有一个奇怪的问题.代码在控制台应用程序中工作正常,但当我尝试在服务中使用完全相同的代码时,client.ceceive方法被阻止.服务正常运行,不会中止,我有记录写入文本文件,所以我知道它到达接收.有人有主意吗?代码如下......
public partial class Service1 : ServiceBase
{
private bool serviceStarted = false;
Thread listenerThread;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
serviceStarted = false;
WriteLog("UDPListener Service Starting");
ThreadStart thread = new ThreadStart(StartListening);
listenerThread = new Thread(thread);
serviceStarted = true;
listenerThread.Start();
}
protected override void OnStop()
{
WriteLog("UDPListener Service Stopping");
serviceStarted = false;
listenerThread.Join(new TimeSpan(0, 0, 5));
}
private void StartListening()
{
WriteLog("Worker thread spawned.");
UdpClient client = new UdpClient(40000);
while (serviceStarted)
{
WriteLog("Service is started. …Run Code Online (Sandbox Code Playgroud)