C# 从窗体中取消并行循环

C# 从窗体中取消并行循环,c#,wpf,cancellation,cancellationtokensource,C#,Wpf,Cancellation,Cancellationtokensource,我有一个带文本框的C#表格 我想运行一个事件,每次文本框中的文本更改时,它都会取消最后一个parallel.for循环并使用新信息重新启动,但是我无法确定如何检索旧的取消令牌以在运行此事件时取消上一次迭代 我希望下面的代码解释了我想做什么 private void Textbox_TextChanged(object sender, EventArgs e) { //call previous cancellation token from Textbox.tag and

我有一个带文本框的C#表格

我想运行一个事件,每次文本框中的文本更改时,它都会取消最后一个parallel.for循环并使用新信息重新启动,但是我无法确定如何检索旧的取消令牌以在运行此事件时取消上一次迭代

我希望下面的代码解释了我想做什么

private void Textbox_TextChanged(object sender, EventArgs e)
    {

       //call previous cancellation token from Textbox.tag and execute

        CancellationTokenSource cts = new CancellationTokenSource();
        ParallelOptions op = new ParallelOptions();
        op.CancellationToken = cts.Token;
        Parallel.For(0, 1, op, t =>
        {
            //Store cancellation token in textbox.tag

            //do stuff
        });
    }

提前感谢

您需要在方法范围之外声明/存储它:

private CancellationTokenSource cts = new CancellationTokenSource();
private ParallelOptions op = new ParallelOptions();

private void Textbox_TextChanged(object sender, EventArgs e)
    {

        //call previous cancellation token from Textbox.tag and execute
        cts.Cancel();

        cts = new CancellationTokenSource();
        op = new ParallelOptions();

        op.CancellationToken = cts.Token;
        Parallel.For(0, 1, op, t =>
        {
            //do stuff
        });
    }