Я использую dot Net 4.0. Как отменить задачу в моем коде. В методе задачи попытка найти путь к проекту уже доступна или нет, который будет искать до 1 минуты, если превышает время, тогда задача будет отменена. Если путь к проекту доступен, я хочу немедленно отменить задачу (не нужно ждать 1 минуту) и уведомить какой-либо другой объект о завершении процесса.
public static class MplDesignGateway
{
public static event EventHandler DGInstanceUpdate;
public static void OpenDGProject(string projectPath)
{
CancellationTokenSource tokenSource = new CancellationTokenSource();
try
{
Task openDGTask = Task.Factory.StartNew(() => CheckForProcess(projectPath, tokenSource));
openDGTask.Wait(tokenSource.Token);
}
catch (Exception ex)
{
}
finally
{
tokenSource.Dispose();
//Trigger this event which will be notify to view model to refresh running instance list
DGInstanceUpdate?.Invoke(null, EventArgs.Empty);
}
}
private static void CheckForProcess(string projectPath, CancellationTokenSource tokenSource)
{
bool isFoundprojectPath = false;
int count = 0;
while (!isFoundprojectPath && count <= 60)
{
count++;
Thread.Sleep(1000);
//isFoundprojectPath = GetDGRunningInstanceList().Any(p => p.Contains(projectPath));
}
tokenSource.Cancel();
}
}
Задача должна дождаться нахождения заданного пути проекта. Максимум 1 минута будет пытаться найти путь к проекту, иначе я хочу отменить задачу.