【发布时间】:2015-04-12 23:38:00
【问题描述】:
我想安排一个函数每分钟执行一次。此方法调用一个异步函数,即 HttpWebRequest。我正在使用 async/await 策略:
var timer = new System.Threading.Timer(async (e) =>
{
RSSClient rss = new RSSClient(listBoxRSS);
RSSNotification n = await rss.fetch();
// ...
Console.WriteLine("Tick");
}, null, 0, 5000);
控制台打印“Tick”,但只打印一次。计时器似乎由于某种原因被卡住了。
删除 async/await 代码后,计时器工作正常:
var timer = new System.Threading.Timer((e) =>
{
Console.WriteLine("Tick");
}, null, 0, 5000);
为什么不重复?如何使用 System.Threading.Timer 实现异步/等待策略?
【问题讨论】:
-
您是否尝试将
try/catch放入您的计时器代码中?也许它会在后续调用中引发异常。
标签: c# asynchronous timer