ExcelDna异步与全部取消

时间:2016-02-29 20:06:26

标签: c# excel-dna

我正在使用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添加到我的项目中,但这似乎也不支持我的用例?

1 个答案:

答案 0 :(得分:1)

如果使用注册扩展中的AsyncTaskUtil之类的代码运行任务,则可以使用CancellationTokenSource.CreateLinkedTokenSource获取您创建的任务的组合令牌源。您可以使用它将您自己的CancellationTokenSource与正常令牌组合在一起(如果清除了调用该功能的单元格,则会取消)。