I have a windows service running in background which do some task at every 15 minutes, but I have to call a function with multiple time like in a loop and execution for one time of that function can also take more than 15 minutes depends on configuration. Any suggestion for that like fire and forget for achieving this.
CallTask
is function called in Service every 15 minutes.
Sometimes StartTask
gets executed some time not, also sometimes its getting executed only one time only.
public void CallTask()
{
try
{
DataTable dt = getdata();
for (int i = 0; i < dt.Rows.Count; i++)
{
Task.Run(() => StartTask(Convert.ToString(dt.Rows[i]["PackageId"])));
}
}
catch (Exception ex)
{
//throw;
}
}
public async Task StartTask(string PackageId)
{
int timegap = 30 * 1000;
//module 1
int Slice1 = 10;
for (int i = 0; i < Slice1; i++)
{
// this is api call which needs to be called at every 30 seconds,
// for number of slices which can vary.
var _response = await CallApi(PackageId);
SaveResultinDB(_response);
await Task.Delay(timegap);
}
}