gpt4 book ai didi

c# - CancellationTokenSource,什么时候处理?

转载 作者:太空狗 更新时间:2023-10-29 17:55:06 27 4
gpt4 key购买 nike

<分区>

我应该什么时候处理 CancellationTokenSource?例如,如果我每次单击按钮时都制作一个并将其放入线程中:

    private void Button_Click(object sender, EventArgs e)
{
if (clicked == false)
{

clicked = true;
CTSSend = new CancellationTokenSource();
Thread1 = new Thread(() => Method1(CTSSend.Token));
Thread1.Start();
Thread2 = new Thread(() => Method2(CTSSend.Token));
Thread2.Start();
}
else
{
CTSSend.Cancel();
CTSSend.Dispose();
clicked = false;
}
}

我应该像那样处理它吗?因为如果是这样的话,这会有点问题,因为我需要把它放在 Disposer 中,它会在应用程序关闭时处理,因为如果我不小心等待它,就不能保证它不会被处理,这将导致 ObjectDisposedException。

我什至尝试用它来防止异常(因为我不想使用 Try Catch,在这种情况下我什至不想首先得到错误)。

        if (CTSSend != null)
{
CTSSend.Cancel();
CTSSend.Dispose();
}
if (CTSReceive != null)
{
CTSReceive.Cancel();
CTSReceive.Dispose();
}

但是好吧,也许我应该只在最后处理它,而不是每次都在 Cancel 之后处理它?尽管我不喜欢这样会不断向新对象添加资源。

你们如何处理这些案例?

编辑:

将解决它的一个更具体的问题(在我的例子中)。

如何将 bool 值绑定(bind)到 CancellationToken?所以我可以有类似 CTS.IsDisposed 的东西;

有些对象有,但 CTS 没有,如果有,它会解决我遇到的问题。我目前正在单独使用 bool,这不是我喜欢的东西。

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