首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何暂停或停止"CSharpScript“运行?

如何暂停或停止"CSharpScript“运行?
EN

Stack Overflow用户
提问于 2017-01-04 21:15:36
回答 0查看 1K关注 0票数 0

我在我的应用程序中使用Roslyn的脚本API,代码片段如下:

代码语言:javascript
复制
public class ScriptEngine
{
    public static string CodeText;
    public static event Action<string[]> CompileErrorEvent;

    public static async Task<bool> RunScriptAsync(CancellationToken ct)
    {
        try
        {
            var scriptResult = await CSharpScript.RunAsync(CodeText, null, new ScriptHost(), null, ct);
            return true;
        }
        catch (Microsoft.CodeAnalysis.Scripting.CompilationErrorException ex)
        {
             List<string> result = new List<string>();

             foreach (var item in ex.Diagnostics)
             {
                 result.Add(item.ToString());
             }

             if (result.Count > 0)
             {
                 CompileErrorEvent?.Invoke(result.ToArray());
             }

             return false;
         }
         catch (Exception ex)
         {
             IMCP_Base.Dialog.Show.SimpleError("脚本运行", ex.Message, "修改脚本");
             return false;
         }
     } 
     .......
}

public static CancellationTokenSource ScriptCTS;

private async void btnScriptRun_ItemClick(object sender, ItemClickEventArgs e)
{
    ScriptCTS = new CancellationTokenSource();

    if (CheckScriptEditorIsNotNull())
    {
         Script.ScriptEngine.CodeText = ScriptEditor.GetCode();
         bool runSuccess = await Script.ScriptEngine.RunScriptAsync(ScriptCTS.Token);
    }
}   

private void btnScriptStop_ItemClick(object sender, ItemClickEventArgs e)
{
    ScriptCTS?.Cancel();
}

CSharpScript.RunAsync方法运行良好,但当我单击ScriptStop按钮时,ScriptCTS?.Cancel()无法取消正在运行的脚本。

如何停止或暂停正在运行的脚本?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41464734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档