我正在开发一个能够接收套接字连接的 Windows 服务,因此在 OnStart
方法中:
protected override void OnStart(string[] args)
{
start();
}
“start”函数长这个样子:
start
。public async void Start()
{
//initialization things
...
...
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
while(true)
{
TcpClient client = await listener.AcceptTcpClientAsync().ConfigureAwait(false);
...
}
...
}
问题在于没有连接被接受,而同样的代码在标准命令行项目中运行得很好。我怀疑我的设计有问题,哪个线程运行了
OnStart
方法?当控制流程在await
等待接受过程后返回OnStart
时,异步方法是否被忽略了,因为它是Windows服务中的特殊情况?欢迎任何建议。
Taskscheduler.UnobservedTaskException
,检查您的事件日志并刷新您的服务屏幕。https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskscheduler.unobservedtaskexception?view=netframework-4.7.2 - Jesse de Witasync Task
,然后再试一次。 - Jesse de Wit