草庐IT

task-parallel-library

全部标签

c# - 使用 Task.Factory.StartNew 时更新 UI 标签

我正在尝试让我的UI在我的WPF应用程序中更具响应性。我使用生成了一个新线程Task.Factory.StartNew(()=>RecurseAndDeleteStart());在该方法RecurseAndDeleteStart()中,我想用正在删除的文件更新UI中的标签。如何做到这一点? 最佳答案 由于它是WPF,您可以使用Dispatcher并调用Dispatcher.BeginInvoke将调用编码回UI线程以更新标签。或者,您可以将TaskScheduler传递到您的方法中,并使用它来更新标签,如下所示://Thisline

c# - 将长时间运行的任务与异步/等待模式结合起来的正确方法是什么?

我有一个“高精度”定时器类,我需要它能够启动、停止和暂停/恢复。为此,我将我在Internet上找到的几个不同的示例结合在一起,但我不确定我是否正确地将Tasks与asnyc/await结合使用。这是我的相关代码://basedonhttp://haukcode.wordpress.com/2013/01/29/high-precision-timer-in-netc/publicclassHighPrecisionTimer:IDisposable{Task_task;CancellationTokenSource_cancelSource;//basedonhttp://blogs

c# - 将长时间运行的任务与异步/等待模式结合起来的正确方法是什么?

我有一个“高精度”定时器类,我需要它能够启动、停止和暂停/恢复。为此,我将我在Internet上找到的几个不同的示例结合在一起,但我不确定我是否正确地将Tasks与asnyc/await结合使用。这是我的相关代码://basedonhttp://haukcode.wordpress.com/2013/01/29/high-precision-timer-in-netc/publicclassHighPrecisionTimer:IDisposable{Task_task;CancellationTokenSource_cancelSource;//basedonhttp://blogs

c# - 如何取消await Task.Delay()?

正如您在这段代码中看到的:publicasyncvoidTaskDelayTest(){while(LoopCheck){for(inti=0;i我希望它在一秒内将文本框设置为i的字符串值,直到我将LoopCheck值设置为false。但它所做的是为所有人创建所有迭代,即使我将LoopCheck值设置为false,它仍然会异步执行它的操作。当我设置LoopCheck=false时,我想取消所有等待的Task.Delay()迭代。我怎样才能取消它? 最佳答案 使用overloadTask.Delay接受CancellationToke

c# - 如何取消await Task.Delay()?

正如您在这段代码中看到的:publicasyncvoidTaskDelayTest(){while(LoopCheck){for(inti=0;i我希望它在一秒内将文本框设置为i的字符串值,直到我将LoopCheck值设置为false。但它所做的是为所有人创建所有迭代,即使我将LoopCheck值设置为false,它仍然会异步执行它的操作。当我设置LoopCheck=false时,我想取消所有等待的Task.Delay()迭代。我怎样才能取消它? 最佳答案 使用overloadTask.Delay接受CancellationToke

c# - TPL Dataflow,仅在所有源数据 block 完成时保证完成

当两个转换block都完成时,如何重写代码完成的代码?我认为完成意味着它被标记为完成并且“出队列”是空的?publicTest(){broadCastBlock=newBroadcastBlock(i=>{returni;});transformBlock1=newTransformBlock(i=>{Console.WriteLine("1inputcount:"+transformBlock1.InputCount);Thread.Sleep(50);return("1_"+i);});transformBlock2=newTransformBlock(i=>{Console.Wr

c# - TPL Dataflow,仅在所有源数据 block 完成时保证完成

当两个转换block都完成时,如何重写代码完成的代码?我认为完成意味着它被标记为完成并且“出队列”是空的?publicTest(){broadCastBlock=newBroadcastBlock(i=>{returni;});transformBlock1=newTransformBlock(i=>{Console.WriteLine("1inputcount:"+transformBlock1.InputCount);Thread.Sleep(50);return("1_"+i);});transformBlock2=newTransformBlock(i=>{Console.Wr

c# - 从 WCF 服务启动多个任务

我需要优化WCF服务……这是一件相当复杂的事情。这次我的问题与任务有关(TaskParallelLibrary,.NET4.0)。发生的情况是,当服务被调用时(使用Task.Factory.StartNew)我启动了几个任务,然后等待它们完成:Task.WaitAll(task1,task2,task3,task4,task5,task6);好吧...我看到但不喜欢的是,在第一次调用时(有时是前2-3次调用,如果一个接一个地快速调用),最后的任务比其他任务开始得晚得多(我正在看一个案例,它比其他案例晚0.5秒开始)。我试着打电话ThreadPool.SetMinThreads(12*E

c# - 从 WCF 服务启动多个任务

我需要优化WCF服务……这是一件相当复杂的事情。这次我的问题与任务有关(TaskParallelLibrary,.NET4.0)。发生的情况是,当服务被调用时(使用Task.Factory.StartNew)我启动了几个任务,然后等待它们完成:Task.WaitAll(task1,task2,task3,task4,task5,task6);好吧...我看到但不喜欢的是,在第一次调用时(有时是前2-3次调用,如果一个接一个地快速调用),最后的任务比其他任务开始得晚得多(我正在看一个案例,它比其他案例晚0.5秒开始)。我试着打电话ThreadPool.SetMinThreads(12*E

c# - 为什么 Parallel.ForEach 不运行多个线程?

今天我尝试对foreach语句进行一些优化,它适用于XDocument。优化前:foreach(XElementeleminxDoc.Descendants("APSEvent").ToList()){//someoperations}优化后:Parallel.ForEach(xDoc.Descendants("APSEvent").ToList(),elem=>{//sameoperations});我看到Parallel.ForEach(...)中的.NET只打开了一个线程!因此Parallel的时间跨度比标准的foreach大。为什么你认为.NET只开了1个线程?因为文件锁定?谢