我想要安排一个函数每分钟执行一次。这个方法调用了一个异步函数,它是一个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”,似乎计时器由于某种原因停止了。
但是,移除异步/等待代码后,计时器就可以正常工作:
var timer = new System.Threading.Timer((e) =>
{
Console.WriteLine("Tick");
}, null, 0, 5000);
为什么不会重复,如何使用System.Threading.Timer实现async/await策略?
try/catch
吗?也许它在后续调用中会抛出异常。 - Darin Dimitrov