相关疑难解决方法(0)

如何中止/取消TPL任务?

在一个线程中,我创建一些System.Threading.Task并启动每个任务.

当我做一个.Abort()杀死线程时,任务不会中止.

我怎样才能传递.Abort()给我的任务?

.net c# multithreading task abort

144
推荐指数
7
解决办法
15万
查看次数

是否存在Process.Start的异步等价物?

就像标题所示,是否有等价的Process.Start(允许你运行另一个应用程序或批处理文件)我可以等待?

我正在玩一个小型控制台应用程序,这似乎是使用异步和等待的完美的地方,但我找不到这种情况的任何文档.

我在想的是这些方面:

void async RunCommand()
{
    var result = await Process.RunAsync("command to run");
}
Run Code Online (Sandbox Code Playgroud)

c# async-await c#-5.0

124
推荐指数
4
解决办法
6万
查看次数

如何将task.Wait(CancellationToken)转换为await语句?

所以,task.Wait()可以转化为await task.当然,语义是不同的,但这大致是我将阻塞代码Waits转换为异步代码的方法awaits.

我的问题是如何转变task.Wait(CancellationToken)为各自的await声明?

.net c# task-parallel-library async-await

12
推荐指数
2
解决办法
1753
查看次数

在没有CancellationToken的情况下停止任务

我正在使用具有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)

c# cancellation async-await

5
推荐指数
1
解决办法
4478
查看次数