Is the code "periodic work" access to any of the public members someInstruction? If not, then it makes no sense to use the extension method in the first place.
, , someInstruction SomeClass, - :
public static class SomeClassExtensions
{
public static async Task DoPeriodicWorkAsync(
this SomeClass someInstruction,
TimeSpan dueTime,
TimeSpan interval,
CancellationToken token)
{
}
}
, someInstruction Task ( , ).
UPDATE OP:
, , , . , :
public static class PeriodicRunner
{
public static async Task DoPeriodicWorkAsync(
Action workToPerform,
TimeSpan dueTime,
TimeSpan interval,
CancellationToken token)
{
if(dueTime > TimeSpan.Zero)
await Task.Delay(dueTime, token);
while(!token.IsCancellationRequested)
{
workToPerform();
if(interval > TimeSpan.Zero)
await Task.Delay(interval, token);
}
}
}
:
PeriodicRunner.DoPeriodicWorkAsync(MethodToRun, dueTime, interval, token);
void MethodToRun()
{
}
-:
PeriodicRunner.DoPeriodicWorkAsync(() => { },
dueTime, interval, token);