78得票5回答
在并行执行任务

好的,基本上我有一堆任务(10个),我想同时启动它们并等待它们完成。完成后,我想执行其他任务。我读了很多关于这个的资源,但对于我的特定情况,我无法做到正确... 这是我目前拥有的(代码已被简化):public async Task RunTasks() { var tasks = n...

78得票4回答
Task.Factory.StartNew()保证使用的线程与调用线程不同吗?

我从一个函数开始了一个新任务,但是我不希望它在同一个线程上运行。只要它在不同的线程上运行,我就不在意它运行在哪个线程上(因此,这个问题中提供的信息没有帮助)。 我是否保证下面的代码将始终在允许Task t再次进入之前退出TestLock?如果不是,那么推荐使用什么设计模式来防止重入? o...

78得票1回答
为什么会发生 TaskCanceledException 异常?

我有以下测试代码: void Button_Click(object sender, RoutedEventArgs e) { var source = new CancellationTokenSource(); var tsk1 = new Task(() => ...

77得票4回答
使用C#的.NET 4.0中,Task.Run的替代方法是什么?

我使用的VB 2010 .NET 4.0程序出现了语法错误:“System.Threading.Tasks.task中不包含Run的定义。” 有什么想法吗?在.NET 4.0中是否有任何替代方法来运行程序?using System; using System.Collections.Gene...

76得票5回答
为什么TaskScheduler.Current是默认的TaskScheduler?

任务并行库很棒,我在过去几个月中经常使用它。然而,有一件事情真的困扰着我:TaskScheduler.Current 是默认任务调度程序,而不是 TaskScheduler.Default。这在文档和示例中一眼看上去绝对不明显。 Current 可能会导致微妙的错误,因为其行为取决于是否在另...

76得票3回答
TPL和async/await(线程处理)之间的区别

试图理解TPL和async/await在线程创建方面的区别。 我认为TPL(TaskFactory.StartNew)类似于ThreadPool.QueueUserWorkItem,它将工作排队到线程池中的线程上。当然,除非您使用TaskCreationOptions.LongRunning...

75得票2回答
无法等待异步lambda函数

请考虑这个问题,Task task = new Task (async () =>{ await TaskEx.Delay(1000); }); task.Start(); task.Wait(); 调用task.Wait()方法不会等待任务完成,而是立即执行下一行代码,但是如...

75得票5回答
使用Task.Factory.StartNew传递方法参数

我有如下代码:var task = Task.Factory.StartNew(CheckFiles, cancelCheckFile.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); private void C...

74得票3回答
如何在控制台应用程序中从 Task.WaitAll() 获取返回值?

我正在使用控制台应用程序作为概念验证,并且需要获取异步返回值。 我发现我需要在主方法中使用 Task.WaitAll() 来避免需要一个异步的 "main()" 方法,因为这是不合法的。 现在我卡在了试图找到允许我在 Main() 中使用泛型或仅返回可转换对象的重载上。