为了账号安全,请及时绑定邮箱和手机立即绑定

任务可靠性(或者我应该做其他事情吗?)

任务可靠性(或者我应该做其他事情吗?)

C#
收到一只叮咚 2021-10-09 16:14:00
我有一个使用 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信