task-parallel-library相关内容

将任务作为参数传递

我不确定这是否可行,所以我来了: 我有一系列动作来执行多个 异步任务方法A(...){//一些代码//调用特定的异步 IO 绑定方法//一些代码} 还有MethodB()、MethodC()等,除了调用特定的Async IO绑定方法外,它们的代码完全相同.我试图找到一种方法将任务指针传递给方法,以便我们稍后可以在 Method() 中执行它. 我目前正在做的是: 私有异步任务方法 ..
发布时间:2021-11-26 11:23:54 C#/.NET

Task.WhenAny 和未观察到的异常

假设我有三个任务,a、b 和 c.所有三个都保证在 1 到 5 秒之间的随机时间抛出异常.然后我写了下面的代码: await Task.WhenAny(a, b, c); 这最终会从首先出现故障的任务中抛出异常.由于这里没有 try...catch,这个异常会冒泡到我代码中的其他地方. 当剩下的两个任务抛出异常时会发生什么?这些不是观察不到的异常,会导致整个进程被杀死吗?这是否意味着使用 ..
发布时间:2021-11-26 11:22:40 C#/.NET

异步/等待.在哪里执行方法的可等待部分的继续?

我真的很好奇 async/await 如何使您的程序不被停止.我真的很喜欢 Stephen Cleary 如何解释 async/await:“我喜欢把“await"看作是“异步等待".也就是说,async 方法会暂停,直到 awaitable 完成(所以它等待),但实际线程并没有被阻塞(所以它是异步的))." 我读过 async 方法同步工作,直到编译器遇到 await 关键字.好.如果编译 ..
发布时间:2021-11-26 11:16:36 C#/.NET

执行永无止境的任务的正确方法.(计时器与任务)

因此,只要应用程序正在运行或请求取消,我的应用程序就需要几乎连续执行操作(每次运行之间暂停 10 秒左右).它需要做的工作最多可能需要 30 秒. 最好使用 System.Timers.Timer 并使用 AutoReset 来确保它在前一个“滴答"完成之前不执行操作. 或者我应该在 LongRunning 模式下使用带有取消标记的常规任务,并在其中使用常规的无限 while 循环来调 ..
发布时间:2021-11-26 11:02:09 C#/.NET

并行运行两个异步任务并在 .NET 4.5 中收集结果

我一直在尝试获得一些我认为使用 .NET 4.5 很简单的东西 我想同时启动两个长时间运行的任务并收集 结果是最好的 C# 4.5 (RTM) 方式 以下有效,但我不喜欢它,因为: 我希望 Sleep 成为一个异步方法,以便它可以await 其他方法 它看起来很笨拙,Task.Run() 我认为这根本没有使用任何新的语言功能! 工作代码: public static ..
发布时间:2021-11-26 11:00:50 C#/.NET

等待具有不同结果的多个任务

我有 3 个任务: 私有异步任务FeedCat() {}私有异步任务卖房() {}私有异步任务BuyCar() {} 在我的代码可以继续之前,它们都需要运行,我也需要每个的结果.结果没有任何共同点 如何调用并等待 3 个任务完成然后获取结果? 解决方案 使用 WhenAll 后,可以使用 await 单独拉出结果: var catTask = FeedCat();va ..
发布时间:2021-11-26 11:00:41 C#/.NET

如何取消等待中的任务?

我正在处理这些 Windows 8 WinRT 任务,并且我正在尝试使用以下方法取消任务,并且它在某种程度上起作用.CancelNotification 方法确实被调用了,这让你认为任务被取消了,但在后台任务一直在运行,然后任务完成后,任务的状态始终是完成的,永远不会被取消.有没有办法在任务取消时完全停止任务? private async void TryTask(){CancellationT ..
发布时间:2021-11-26 11:00:29 C#/.NET

异步/等待 vs BackgroundWorker

这几天我测试了 .net 4.5 和 c#5 的新特性. 我喜欢它的新 async/await 功能.早些时候我使用 BackgroundWorker使用响应式 UI 在后台处理更长的进程. 我的问题是:在拥有这些不错的新功能之后,我应该何时使用 async/await 以及何时使用 BackgroundWorker?两者的常见场景是什么? 解决方案 async/await 旨 ..

TaskCreationOptions.LongRunning 选项和 ThreadPool

TPL 使用任务调度器来协调任务.根据官方文档,默认任务调度器使用线程池,但如果TaskCreationOptions.LongRunning 选项,然后它将为该任务(A)创建一个专用线程. 问题:截至目前,Visual Studio 2010 的 MSDN 文档尚未准备好,当前在线 MSDN 尚未最终确定;有谁知道(A)是对还是错? 解决方案 是的,LongRunning 强制在池 ..
发布时间:2021-11-26 10:40:11 C#/.NET

使用任务并行库时如何处理所有未处理的异常?

我正在使用 TPL (.NET 4.0 中的任务并行库).我想通过使用 Thread.GetDomain().UnhandledException 事件来集中所有未处理异常的处理逻辑.但是,在我的应用程序中,对于以 TPL 代码启动的线程,例如,永远不会触发该事件.Task.Factory.StartNew(...).如果我使用诸如 new Thread(threadStart).Start() ..

System.Threading.Timer 是否有基于任务的替代品?

我是 .Net 4.0 的 Tasks 的新手,我无法找到我认为是基于 Task 的替换或 Timer 的实现,例如一个周期性的任务.有这种事吗? 更新我想出了我认为是满足我需求的解决方案,即将“计时器"功能包装在带有子任务的任务中,所有子任务都利用 CancellationToken 并返回任务以便能够参与进一步的任务步骤. public static Task StartPeriodi ..
发布时间:2021-11-26 10:34:27 C#/.NET

MaxDegreeOfParallelism 有什么作用?

我正在使用 Parallel.ForEach 并且我正在做一些数据库更新,现在没有设置 MaxDegreeOfParallelism ,双核处理器机器导致 sql 客户端超时,否则四核处理器机器不知何故不会超时. 现在我无法控制运行代码的地方可用的处理器内核类型,但是否可以使用 MaxDegreeOfParallelism 更改某些设置,以便同时运行更少的操作并且不会导致超时? 我可以 ..

在 c# 4.0 中执行即发即弃方法的最简单方法

我真的很喜欢这个问题: 最简单的点火方法在 C# 中忘记方法? 我只想知道,既然我们在 C# 4.0 中有了 Parallel 扩展,是否有更好的更简洁的方式来实现 Fire &忘记并行 linq? 解决方案 不是 4.0 的答案,但值得注意的是,在 .Net 4.5 中,您可以通过以下方式更简单: #pragma 警告禁用 4014Task.Run(() =>{MyFire ..
发布时间:2021-11-26 10:33:17 C#/.NET

使用 Tasks (TPL) 库会使应用程序多线程吗?

最近面试的时候,被问到这个问题. 问:你写过多线程应用程序吗? 答:是的 问:需要解释更多吗? A:我使用Tasks(任务并行库)来执行一些任务,比如在加载UI时等待来自互联网的一些信息.这提高了我的应用程序可用性. 问:但是,仅仅使用了TPL 就意味着您编写了一个多线程 应用程序? 我:(不知道该说什么1) 那么,到底什么是多线程应用程序?和使用Task ..

什么时候应该 TaskCompletionSource使用?

AFAIK,它只知道在某个时刻,它的 SetResult 或 SetException 方法被调用以完成 Task通过其 Task 属性公开. 换句话说,它充当Task及其完成的生产者. 我在这里看到了例子: 如果我需要一种方法来异步执行 Func 并有一个 Task表示该操作. public static TaskRunAsync(Func 函数){if (function ..
发布时间:2021-11-26 10:29:06 C#/.NET