草庐IT

task-parallel-library

全部标签

c# - 等待 .NET 4.0 : meaningful stack traces

我有一个使用.NET4.0的C#控制台应用程序项目,安装了Microsoft.Bcl.Async包。我使用这段代码:internalclassProgram{privatestaticvoidMain(string[]args){Foo().Wait();}staticvoidLog(Exceptionex){}privatestaticasyncTaskFoo(){try{awaitDoSomething();}catch(Exceptionex){Log(ex);}}privatestaticasyncTaskDoSomething(){thrownewDivideByZeroEx

c# - TaskCreationOptions.LongRunning 选项和 ThreadPool

TPL使用任务计划程序来协调任务。根据officialdocument,默认任务调度程序使用线程池,但如果出现TaskCreationOptions.LongRunning选项,那么它将为该任务创建一个专用线程(A)。问题:截至目前,VisualStudio2010的MSDN文档尚未准备好,当前在线MSDN尚未最终确定;有谁知道(A)是对还是错? 最佳答案 是的,LongRunning强制在池外创建一个新线程。这是最新框架版本的一些伪反汇编代码:...if(task.OptionsHasFlagLongRunning)thencre

c# - TaskCreationOptions.LongRunning 选项和 ThreadPool

TPL使用任务计划程序来协调任务。根据officialdocument,默认任务调度程序使用线程池,但如果出现TaskCreationOptions.LongRunning选项,那么它将为该任务创建一个专用线程(A)。问题:截至目前,VisualStudio2010的MSDN文档尚未准备好,当前在线MSDN尚未最终确定;有谁知道(A)是对还是错? 最佳答案 是的,LongRunning强制在池外创建一个新线程。这是最新框架版本的一些伪反汇编代码:...if(task.OptionsHasFlagLongRunning)thencre

c# - 使用 Task.WaitAll() 来处理等待的任务?

理想情况下我想做的是用非阻塞模式延迟一个任务,然后等待所有任务完成。我试图添加Task.Delay返回的任务对象,然后使用Task.WaitAll但这似乎无济于事。我该如何解决这个问题?classProgram{publicstaticasyncvoidFoo(intnum){Console.WriteLine("Thread{0}-Start{1}",Thread.CurrentThread.ManagedThreadId,num);varnewTask=Task.Delay(1000);TaskList.Add(newTask);awaitnewTask;Console.Write

c# - 使用 Task.WaitAll() 来处理等待的任务?

理想情况下我想做的是用非阻塞模式延迟一个任务,然后等待所有任务完成。我试图添加Task.Delay返回的任务对象,然后使用Task.WaitAll但这似乎无济于事。我该如何解决这个问题?classProgram{publicstaticasyncvoidFoo(intnum){Console.WriteLine("Thread{0}-Start{1}",Thread.CurrentThread.ManagedThreadId,num);varnewTask=Task.Delay(1000);TaskList.Add(newTask);awaitnewTask;Console.Write

c# - 可能不会在已经启动的任务上调用 RunSynchronously

我为我的应用程序进行单元测试而创建的c#类出现问题,特别是问题与System.Threading.Tasks.Task对象有关。我有一个此类对象的列表,我想在它们上同步执行每个对象。我调用如下:myTask.RunSynchronously();当我这样做时,我总是收到以下错误,我不知道为什么我该如何解决它。System.InvalidOperationException:RunSynchronouslymaynotbecalledontaskthatwasalreadystarted.有人有什么想法吗? 最佳答案 问题是您在调用T

c# - 可能不会在已经启动的任务上调用 RunSynchronously

我为我的应用程序进行单元测试而创建的c#类出现问题,特别是问题与System.Threading.Tasks.Task对象有关。我有一个此类对象的列表,我想在它们上同步执行每个对象。我调用如下:myTask.RunSynchronously();当我这样做时,我总是收到以下错误,我不知道为什么我该如何解决它。System.InvalidOperationException:RunSynchronouslymaynotbecalledontaskthatwasalreadystarted.有人有什么想法吗? 最佳答案 问题是您在调用T

c# - 如何将 Task<TDerived> 转换为 Task<TBase>?

因为C#的Task是一个类,你显然不能转换Task到Task.但是,您可以:publicasyncTaskRun(){returnawaitMethodThatReturnsDerivedTask();}有没有我可以调用的静态任务方法来获得Task本质上只是指向底层任务并转换结果的实例?我想要这样的东西:publicTaskRun(){returnTask.FromDerived(MethodThatReturnsDerivedTask());}有这样的方法吗?仅出于此目的使用异步方法是否有任何开销? 最佳答案 Doessucham

c# - 如何将 Task<TDerived> 转换为 Task<TBase>?

因为C#的Task是一个类,你显然不能转换Task到Task.但是,您可以:publicasyncTaskRun(){returnawaitMethodThatReturnsDerivedTask();}有没有我可以调用的静态任务方法来获得Task本质上只是指向底层任务并转换结果的实例?我想要这样的东西:publicTaskRun(){returnTask.FromDerived(MethodThatReturnsDerivedTask());}有这样的方法吗?仅出于此目的使用异步方法是否有任何开销? 最佳答案 Doessucham

c# - Web Api——即发即弃

我有一个WebAPI的操作,我需要在其中运行一些任务并忘记这个任务。这就是我的方法现在的组织方式:publicasyncTaskDoSth(){awaitTask.Run(...);.....//Dosomeotherwork}问题是,它显然在等待线停止,等待完成后才继续工作。我需要“解雇后忘记”我应该只调用Task.Run()而没有任何异步等待吗? 最佳答案 AndIneedto"fireandforget"我有一篇博文详细介绍了fire-and-forgetonASP.NET的几种不同方法。.总而言之:首先,尽量不要做到“即发即