gpt4 book ai didi

c# - 适当使用 BlockingCollection

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:12 26 4
gpt4 key购买 nike

我即将使用如下所示的 BlockingCollection,只是想检查它是否适合线程安全等。想知道我是否需要 CancellationTokenSource。

谢谢

public class MyApp
{
private BlockingCollection<int> blockingCollection;

public void Start()
{
blockingCollection= new BlockingCollection<int>();
var task = Task.Factory.StartNew(ProcessData);
}

public void Add(int value)
{
blockingCollection.Add(value); //This is a thread that receives input
}

private void ProcessData()
{
foreach(var item in blockingCollection.GetConsumingEnumerable())
{
...
}
}

public void Finish()
{
blockingCollection.CompleteAdding();
}
}

最佳答案

显然,您可以在代码中使用取消 token 来支持优雅的取消模式:

  private readonly CancellationTokenSource cts = new CancellationTokenSource();

public void Start()
{
blockingCollection= new BlockingCollection<int>();
var task = Task.Factory.StartNew(ProcessData, cts.Token);
}

private void ProcessData()
{
foreach(var item in blockingCollection.GetConsumingEnumerable(cts.Token))
{
cts.Token.ThrowIfCancellationRequested();

// ...
}
}

public void Cancel()
{
cts.Cancel();
}

关于c# - 适当使用 BlockingCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12601966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com