我有一個使用 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 回答
- 0 關注
- 192 瀏覽
添加回答
舉報
0/150
提交
取消