Я пишу службу Windows, которая запускает прослушиватель TCP. Код ядра работает нормально, но у меня есть несколько проблем с механикой службы Windows.
Прямо сейчас, когда моя служба запускается, она создает поток и запускает прослушиватель TCP в потоке. Затем, когда служба останавливается, она завершает этот поток:
Public Class txnSocketService
Inherits System.ServiceProcess.ServiceBase
Private listenerThread As Thread
Public Sub New()
Me.ServiceName = "txnSocketService"
Me.CanStop = True
Me.CanPauseAndContinue = True
Me.AutoLog = True
End Sub
Shared Sub Main()
System.ServiceProcess.ServiceBase.Run(New txnSocketService)
End Sub
Protected Overrides Sub OnStart(ByVal args() As String)
listenerThread = New Thread(AddressOf pmtListener.Main)
listenerThread.IsBackground = True
listenerThread.Start()
End Sub
Protected Overrides Sub OnStop()
listenerThread.Abort()
End Sub
Private Sub InitializeComponent()
'
'txnSocketService
'
Me.ServiceName = "txnSocketService"
End Sub
End Class
Запуск работает нормально. Однако, если я остановлю службу, процесс службы не прекратится. Что я делаю не так?
[Кстати, я сейчас делаю это на VS2010 Beta 2, если это имеет значение.]