task-parallel-library相关内容
我不确定这是否可行,所以我来了: 我有一系列动作来执行多个 异步任务方法A(...){//一些代码//调用特定的异步 IO 绑定方法//一些代码} 还有MethodB()、MethodC()等,除了调用特定的Async IO绑定方法外,它们的代码完全相同.我试图找到一种方法将任务指针传递给方法,以便我们稍后可以在 Method() 中执行它. 我目前正在做的是: 私有异步任务方法
..
假设我有三个任务,a、b 和 c.所有三个都保证在 1 到 5 秒之间的随机时间抛出异常.然后我写了下面的代码: await Task.WhenAny(a, b, c); 这最终会从首先出现故障的任务中抛出异常.由于这里没有 try...catch,这个异常会冒泡到我代码中的其他地方. 当剩下的两个任务抛出异常时会发生什么?这些不是观察不到的异常,会导致整个进程被杀死吗?这是否意味着使用
..
我真的很好奇 async/await 如何使您的程序不被停止.我真的很喜欢 Stephen Cleary 如何解释 async/await:“我喜欢把“await"看作是“异步等待".也就是说,async 方法会暂停,直到 awaitable 完成(所以它等待),但实际线程并没有被阻塞(所以它是异步的))." 我读过 async 方法同步工作,直到编译器遇到 await 关键字.好.如果编译
..
因此,只要应用程序正在运行或请求取消,我的应用程序就需要几乎连续执行操作(每次运行之间暂停 10 秒左右).它需要做的工作最多可能需要 30 秒. 最好使用 System.Timers.Timer 并使用 AutoReset 来确保它在前一个“滴答"完成之前不执行操作. 或者我应该在 LongRunning 模式下使用带有取消标记的常规任务,并在其中使用常规的无限 while 循环来调
..
我可能遗漏了一些东西,但这样做有什么区别: public void MyMethod(){任务 t = Task.Factory.StartNew(DoSomethingThatTakesTime);t.等待();UpdateLabelToSayItsComplete();}公共异步无效 MyMethod(){var 结果 = Task.Factory.StartNew(DoSomethingT
..
我一直在尝试获得一些我认为使用 .NET 4.5 很简单的东西 我想同时启动两个长时间运行的任务并收集 结果是最好的 C# 4.5 (RTM) 方式 以下有效,但我不喜欢它,因为: 我希望 Sleep 成为一个异步方法,以便它可以await 其他方法 它看起来很笨拙,Task.Run() 我认为这根本没有使用任何新的语言功能! 工作代码: public static
..
我有 3 个任务: 私有异步任务FeedCat() {}私有异步任务卖房() {}私有异步任务BuyCar() {} 在我的代码可以继续之前,它们都需要运行,我也需要每个的结果.结果没有任何共同点 如何调用并等待 3 个任务完成然后获取结果? 解决方案 使用 WhenAll 后,可以使用 await 单独拉出结果: var catTask = FeedCat();va
..
我正在处理这些 Windows 8 WinRT 任务,并且我正在尝试使用以下方法取消任务,并且它在某种程度上起作用.CancelNotification 方法确实被调用了,这让你认为任务被取消了,但在后台任务一直在运行,然后任务完成后,任务的状态始终是完成的,永远不会被取消.有没有办法在任务取消时完全停止任务? private async void TryTask(){CancellationT
..
这几天我测试了 .net 4.5 和 c#5 的新特性. 我喜欢它的新 async/await 功能.早些时候我使用 BackgroundWorker使用响应式 UI 在后台处理更长的进程. 我的问题是:在拥有这些不错的新功能之后,我应该何时使用 async/await 以及何时使用 BackgroundWorker?两者的常见场景是什么? 解决方案 async/await 旨
..
我想使用 Web API,我看到很多人推荐 System.Net.Http.HttpClient. 那很好...但我只有 VS-2010,所以我现在还不能使用 async/await.相反,我想我可以将 Task 与 ContinueWith 结合使用.所以我尝试了这段代码: var client = new HttpClient();client.DefaultRequestHeader
..
平台:WPF、.NET 4.0、C# 4.0 问题:在 Mainwindow.xaml 中,我有一个 ListBox 绑定到一个 Customer 集合,该集合当前是一个 ObservableCollection. ObservableCollectionc = new ObservableCollection(); 这个集合可以通过多个来源更新,比如文件系统、WebS
..
我正在寻找 .NET 4.0 版本的 TPL 数据流库. Nuget 包有一个 4.0 版本的库,但它似乎面向 .NET 4.5. 我发现了对 4.0 版本的各种引用,例如在这个论坛中: http://social.msdn.microsoft.com/Forums/en-US/tpldataflow/thread/6206c714-6dee-4d17-a880-26d0c137
..
TPL 使用任务调度器来协调任务.根据官方文档,默认任务调度器使用线程池,但如果TaskCreationOptions.LongRunning 选项,然后它将为该任务(A)创建一个专用线程. 问题:截至目前,Visual Studio 2010 的 MSDN 文档尚未准备好,当前在线 MSDN 尚未最终确定;有谁知道(A)是对还是错? 解决方案 是的,LongRunning 强制在池
..
我正在使用 TPL (.NET 4.0 中的任务并行库).我想通过使用 Thread.GetDomain().UnhandledException 事件来集中所有未处理异常的处理逻辑.但是,在我的应用程序中,对于以 TPL 代码启动的线程,例如,永远不会触发该事件.Task.Factory.StartNew(...).如果我使用诸如 new Thread(threadStart).Start()
..
我是 .Net 4.0 的 Tasks 的新手,我无法找到我认为是基于 Task 的替换或 Timer 的实现,例如一个周期性的任务.有这种事吗? 更新我想出了我认为是满足我需求的解决方案,即将“计时器"功能包装在带有子任务的任务中,所有子任务都利用 CancellationToken 并返回任务以便能够参与进一步的任务步骤. public static Task StartPeriodi
..
我正在使用 Parallel.ForEach 并且我正在做一些数据库更新,现在没有设置 MaxDegreeOfParallelism ,双核处理器机器导致 sql 客户端超时,否则四核处理器机器不知何故不会超时. 现在我无法控制运行代码的地方可用的处理器内核类型,但是否可以使用 MaxDegreeOfParallelism 更改某些设置,以便同时运行更少的操作并且不会导致超时? 我可以
..
我真的很喜欢这个问题: 最简单的点火方法在 C# 中忘记方法? 我只想知道,既然我们在 C# 4.0 中有了 Parallel 扩展,是否有更好的更简洁的方式来实现 Fire &忘记并行 linq? 解决方案 不是 4.0 的答案,但值得注意的是,在 .Net 4.5 中,您可以通过以下方式更简单: #pragma 警告禁用 4014Task.Run(() =>{MyFire
..
最近面试的时候,被问到这个问题. 问:你写过多线程应用程序吗? 答:是的 问:需要解释更多吗? A:我使用Tasks(任务并行库)来执行一些任务,比如在加载UI时等待来自互联网的一些信息.这提高了我的应用程序可用性. 问:但是,仅仅使用了TPL 就意味着您编写了一个多线程 应用程序? 我:(不知道该说什么1) 那么,到底什么是多线程应用程序?和使用Task
..
AFAIK,它只知道在某个时刻,它的 SetResult 或 SetException 方法被调用以完成 Task通过其 Task 属性公开. 换句话说,它充当Task及其完成的生产者. 我在这里看到了例子: 如果我需要一种方法来异步执行 Func 并有一个 Task表示该操作. public static TaskRunAsync(Func 函数){if (function
..
某些 System.Threading.Tasks.Task 构造函数将 CancellationToken 作为参数: CancellationTokenSource source = new CancellationTokenSource();任务 t = 新任务 (/* 方法 */, source.Token); 让我感到困惑的是,没有办法从内部方法体中实际获取传入的令牌(例如,没有像
..