【发布时间】:2017-11-03 08:07:11
【问题描述】:
我对使用 HTTP 的东西还很陌生,所以我很困惑每隔几秒左右从 HTTP 地址请求数据的最佳方法是什么。
我使用的 API 有 - 至少据我所知没有 webhook 支持。所以我想更新我的数据的方式会是一种相当粗暴的方式。
我希望这发生在后台,这样 GUI 就不会冻结和无响应。所以我知道我(可能)需要摆弄线程。
我得到的最好结果是使用 async/await 计时器。我不完全确定如何使用它,我让它工作的唯一方法是在它过去后抛出一个异常。如果我不这样做 - 它表示并非所有节点都返回一个值,我什至不能使用 return 这真的让我很困惑。
我应该怎么做?
如果它有任何用处,我正在为一个游戏创建自己的 RCON 工具,该工具通过 HTTP API 提供各种服务器数据 - 但这个 API 的文档非常乏味。
【问题讨论】:
-
你使用的是.net core还是.net framework?
-
.NET 框架 :)
-
Framework or Core,答案是一样的。您可以通过
await Task.Delay()调用轻松地循环调用该服务。 HttpClient 的方法也是异步的 -
所以我可以使用while循环和Task.Delay()来防止它冻结程序?但是,这不会向请求的连接发送垃圾邮件吗?或者 await 是否通过 - 从字面上看,等待请求完成来解决这个问题?我对等待/异步的概念还是很陌生,因为我最初来自 Lua,所以这对我来说有点陌生。如果是这样,我应该能够使用秒表来控制它请求数据的时间间隔,对吧?
标签: c# multithreading loops http timer