Как отменить задачу в C # - PullRequest
       5

Как отменить задачу в C #

0 голосов
/ 10 октября 2019

Я использую 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 минута будет пытаться найти путь к проекту, иначе я хочу отменить задачу.

...