对于我们的应用程序,我们正在使用新的Roslyn C#脚本功能。除了一件小事情,这很好用。我们希望精确地能够强制停止执行。
var script = ...; // Generate script
await script.RunAsync(globals, cancellationToken);
首先,我想提及的是,cancelToken对于此无用,因为它仅允许在代码构建期间进行取消。
所以Task本身是不可行的,我想到了将这些东西包装到Thread中的想法,随时可以中止。
var thread = new Thread(async () => await script.RunAsync(globals, cancellationToken));
thread.Start();
//...
thread.Abort();
由于它不起作用,我发现一段时间后,我将中止名为RunAsync方法的线程,而不是正在运行创建的Task的线程。...
所以,现在我没了主意。也许我遗漏了一点,而且很容易做到。
谢谢。