我在这里找到了一个关于如何使用 async/await 模式进行定期工作的好方法:https ://stackoverflow.com/a/14297203/899260
现在我想做的是创建一个扩展方法,这样我就可以做
someInstruction.DoPeriodic(TimeSpan.FromSeconds(5));
这有可能吗,如果,你会怎么做?
编辑:
到目前为止,我将上面 URL 中的代码重构为扩展方法,但我不知道如何从那里着手
public static class ExtensionMethods {
public static async Task<T> DoPeriodic<T>(this Task<T> task, CancellationToken token, TimeSpan dueTime, TimeSpan interval) {
// Initial wait time before we begin the periodic loop.
if (dueTime > TimeSpan.Zero)
await Task.Delay(dueTime, token);
// Repeat this loop until cancelled.
while (!token.IsCancellationRequested) {
// Wait to repeat again.
if (interval > TimeSpan.Zero)
await Task.Delay(interval, token);
}
}
}