Tôi tìm thấy một cách tuyệt vời về cách để làm công việc định kỳ bằng cách sử dụng async/chờ đợi mẫu ở đây: https://stackoverflow.com/a/14297203/899260Tạo một phương pháp mở rộng để làm việc định kỳ
Bây giờ những gì tôi muốn làm là tạo ra một phương pháp khuyến nông để tôi có thể làm
someInstruction.DoPeriodic(TimeSpan.FromSeconds(5));
Điều đó có thể xảy ra và nếu, bạn sẽ làm như thế nào?
EDIT:
Cho đến nay, tôi refactored mã từ URL trên vào một phương pháp mở rộng, nhưng tôi không biết làm thế nào để tiến hành từ đó
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);
}
}
}
Bạn có biết cách tạo phương thức mở rộng không? Nếu có, bạn có câu trả lời, nếu không, bạn có thể sử dụng Google. –
@MarcinJuraszek Tôi đã refactored mã từ liên kết vào một phương pháp mở rộng, nhưng tôi không biết làm thế nào để tiến hành từ đó. Xem chỉnh sửa của tôi. – lightxx
Hiển thị mã của bạn sau đó – MarcinJuraszek