停止上一个任务并运行新任务 wpf

我希望如果用户更改了列表框项,并且上一个任务尚未完成,则该任务停止并启动新任务。我该怎么做?

我使用了此代码,但无法正常工作。


CancellationTokenSource source = new CancellationTokenSource();

CancellationToken token;

private void Listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

    if (task != null && (task.IsCompleted == false || task.Status == TaskStatus.Running))

    {

        if (source != null)

            source.Cancel();

    }


    task = LoadArts();

}


private async Task LoadArts()

{

    token = source.Token;

    await Task.Run(() =>

    {

    }


    , token);

}


守候你守候我
浏览 85回答 1
1回答

白猪掌柜的

您应该将 传递给在任务中运行的代码,并时不时地从中调用令牌上的 ThrowIfCancellationRequest 方法。CancellationToken应将取消令牌传递给委托后的方法。由于取消是通过抛出 an 或 a 来完成的,任务的状态会因为其中抛出异常而出错。传递令牌时,任务会将其与取消例外中的令牌进行比较,如果它们匹配,则任务将被取消,而不是出错。Task.RunOperationCanceledExceptionTaskCanceledException
打开App,查看更多内容
随时随地看视频慕课网APP