在一个线程中,我创建一些System.Threading.Task并启动每个任务.
当我做一个.Abort()杀死线程时,任务不会中止.
我怎样才能传递.Abort()给我的任务?
就像标题所示,是否有等价的Process.Start(允许你运行另一个应用程序或批处理文件)我可以等待?
我正在玩一个小型控制台应用程序,这似乎是使用异步和等待的完美的地方,但我找不到这种情况的任何文档.
我在想的是这些方面:
void async RunCommand()
{
var result = await Process.RunAsync("command to run");
}
Run Code Online (Sandbox Code Playgroud) 所以,task.Wait()可以转化为await task.当然,语义是不同的,但这大致是我将阻塞代码Waits转换为异步代码的方法awaits.
我的问题是如何转变task.Wait(CancellationToken)为各自的await声明?
我正在使用具有async方法但不是CancellationToken重载的外部库.
现在我正在使用另一个StackOverflow问题的扩展方法来添加CancellationToken:
public async static Task HandleCancellation(this Task asyncTask, CancellationToken cancellationToken)
{
// Create another task that completes as soon as cancellation is requested. http://stackoverflow.com/a/18672893/1149773
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
cancellationToken.Register(() =>
tcs.TrySetCanceled(), useSynchronizationContext: false);
Task cancellationTask = tcs.Task;
// Create a task that completes when either the async operation completes, or
// cancellation is requested.
Task readyTask = await Task.WhenAny(asyncTask, cancellationTask);
// In case of cancellation, register a continuation to observe any unhandled …Run Code Online (Sandbox Code Playgroud)