【发布时间】:2017-12-05 02:04:05
【问题描述】:
我有一个问题,我一直在关注这个帖子:
建立我的后台网络服务器。但是,这篇文章以及我阅读的大多数文章都只是一个无头后台服务。就我而言,我确实有一个带有 UI 的主应用程序,用户可以查看并与之交互。所以,我不是无头,我希望应用程序在设备启动时启动并显示 UI。但是,我还想要一个始终在后台运行的 Web 服务器(从应用程序内部)来监听要发布的 JSON 消息。例如,如果我想通过向设备/应用发送 JSON 消息来更改 UI 上的文本。
我了解这通常被称为进程内 Web 服务器。因此,我利用上面的大部分链接来实现 Web 服务器类,然后从后面的 MainPage.xaml.cs 代码中,我这样做是为了在另一个线程上实例化 Web 服务器类以侦听消息:
private async void StartServer()
{
var webServer = new WebServer();
await ThreadPool.RunAsync((workItem) =>
{
webServer.Start();
});
}
这是在后台线程中启动 Web 服务器的正确方法吗?当我阅读代码时(对我来说很轻松,因为我仍在学习所有这些东西),似乎 Web 服务将在线程池中启动,但在收到一条消息后停止。这是正确的还是会无限期地继续运行(或只要应用程序正在运行)?
谢谢!
【问题讨论】:
标签: c# multithreading windows-10-universal windows-10-iot-core