我有一个使用 Nancy 和 Nancy.Hosting.Self 的 C# 控制台应用程序。这个想法是它将通过 Nancy 为 API 提供服务,并且主应用程序将定期轮询与各种应用程序的多个连接+当通过 API(通过 Nancy)请求时从这些连接获取数据。所以我将有 2 个正在运行的进程,常量轮询和 HTTP 服务器。我的 Program.cs 包含以下片段。Task pollTask = null;try { pollTask = Task.Run(async () => { while (processTask) { connectionPool.PollEvents(); await Task.Delay(configLoader.config.connectionPollDelay, wtoken.Token); } keepRunning = false; }, wtoken.Token);}catch (AggregateException ex) { Console.WriteLine(ex);}catch (System.Threading.Tasks.TaskCanceledException ex) { Console.WriteLine("Task Cancelled"); Console.WriteLine(ex);}然后...using (var host = new Nancy.Hosting.Self.NancyHost(hostConfigs, new Uri(serveUrl))) { host.Start(); // ... // routinely checking console for a keypress to quit which then sets // processTask to false, which would stop the polling task, which // in turn sets keepRunning to false which stops the application entirely.}轮询任务似乎只是死亡/停止,没有任何输出到控制台来表明它停止的原因。在检查控制台输入按键时,我还查询了 pollTask.Status,它最终详细说明了“Faulted”。但我不知道为什么。我也在质疑长期/永远运行的任务的可靠性。为避免这种情况含糊不清,我有一个主要问题。Task 是否适合以上述方式永久运行的任务。如果不是,我应该使用什么来实现 2 个并行进程,其中一个是 Nancy。
2 回答
- 2 回答
- 0 关注
- 168 浏览
添加回答
举报
0/150
提交
取消