我有一个场景,我创建了一个传递给父线程的取消令牌,我需要将相同的取消令牌传递给子线程。但是当我将取消令牌传递给子线程时,当父调用 Cancel() 时线程不会被取消。
public void main()
{
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
ChildClass instance = new ChildClass();
Task.Factory.StartNew(() =>
Task.Factory.StartNew(() => instance.start(token), token), token);
}
public void cancel()
{
cts.Cancel();
}
public class ChildClass()
{
public void start(CancellationToken token)
{
ParallelOptions po = new ParallelOptions();
po.CancellationToken = token;
Parallel.For(0, 10, i =>
{"do some processing"}, po, i);
}
}
我在父类中创建了一个取消令牌并通过并行选项将其传递给子线程,但是当父类调用 Cancel() 时,Parallel.For 创建的线程不会终止。
是否有传递 CancellationToken 作为参考的概念?