I am creating a long running task and want to return an object from task if cancelled
private void HandleBackgroundTasks(object args)
{
var handles = args as WaitHandle[];
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
while (WaitHandle.WaitAny(handles) == 0 && !cancellationTokenSource.IsCancellationRequested)
{
var task = Task.Factory.StartNew(BackgroundTask, cancellationTokenSource.Token);
cancellationTokenSource.Token.Register(() => ResetCancellationTaskStatus());
}
}
private void BackgroundTask()
{
//long running task
//task creates an object with task status and id
}
private void ResetCancellationTaskStatus()
{
//Need to update the task status of object created in BackgroundTask method
}