【问题标题】:How to cancel CSharpScript.RunAsync如何取消 CSharpScript.RunAsync
【发布时间】:2016-12-19 13:05:37
【问题描述】:

如何停止 RunAsync?

CancellatioTokenSource cts = new CancellationTokenSource();
//I thought that it's must work, but it don't
var script = CSharpScript.Create(code: someCode);
await script.RunAsync(cancelletionToken: cts.Token);

void button_click()
{
   cts.Cancel()
}

我还能怎么做。为什么这样的方法需要cancellationToken参数?

【问题讨论】:

    标签: c# task roslyn cancellationtokensource csharpscript


    【解决方案1】:

    您必须在await 调用之前执行此操作,这会阻止执行直到您获得结果,例如:

    var task = script.RunAsync(cancelletionToken: cts.Token);
    
    cts.Cancel();
    
    var result = await task;
    

    【讨论】:

    • cts.Cancel() 已经在一个单独的函数中。它也应该在 UI 线程上。
    • 取消令牌只能在RunAsync 自己忙于编译时中断。这不会中断正在运行的脚本。
    猜你喜欢
    • 1970-01-01
    • 2017-09-02
    • 2023-03-24
    • 2011-12-28
    • 2023-03-09
    • 2011-12-10
    • 2015-09-01
    • 2017-06-18
    • 2021-02-28
    相关资源
    最近更新 更多