我正在使用ExcelDna构建插件,并尝试使用异步功能。我想放一个"停止所有"我的功能区中的按钮,但我无法弄清楚如何自带CancellationToken?
在我的IExcelAddIn课程中,我有:
internal static CancellationTokenSource _cancellation = new CancellationTokenSource();
public static void CalculationCanceled()
{
_cancellation.Cancel();
}
public static void CalculationEnded()
{
_cancellation = new CancellationTokenSource();
}
public static void Stop()
{
MessageBox.Show("Stoping");
_cancellation.Cancel();
}
但是如何运行使用此CancellationTokenSource的任务?我查看了Govert创建的示例和帮助库,但无法找到使用我自己的源代码的方法吗?
我期待将https://github.com/Excel-DNA/Registration/blob/master/Source/ExcelDna.Registration/AsyncRegistration.cs Nuget添加到我的项目中,但这似乎也不支持我的用例?
答案 0 :(得分:1)
如果使用注册扩展中的AsyncTaskUtil之类的代码运行任务,则可以使用CancellationTokenSource.CreateLinkedTokenSource
获取您创建的任务的组合令牌源。您可以使用它将您自己的CancellationTokenSource
与正常令牌组合在一起(如果清除了调用该功能的单元格,则会取消)。