草庐IT

parallel-collections

全部标签

c# - 使用 Parallel.ForEach 时跟踪进度

我正在重构我的程序以使用Parallel.ForEach。之前,当我使用常规for循环时,我使用Dispatcher更新WPF进度条,通过将当前数组索引除以数组大小来显示完成百分比。对于并行的foreach循环,这不会正确显示,即%随机跳跃,这是预期的。如何为每个循环更新并行的WPF进度条,以便跟踪已完成的迭代次数? 最佳答案 正如SLaks所建议的,您应该只增加进度条值,而不是将其设置为您从Parallel.For方法获得的当前索引。但是,我会认真考虑使用一些比在每次迭代时向UI线程发送消息更便宜的方法。如果您有大量迭代,那么每次

c# - Parallel.ForEach 错误行为

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C#ValuestorageduringParallelProcessing今天我在我的控制台应用程序中运行一些性能测试,我偶然发现了一些非常出乎意料的事情。我的代码:intiterations=1000000;varmainList=newList();for(inti=0;i();Parallel.ForEach(mainList,(listItem)=>{if(Int32.Parse(listItem)%2==0){listA.Add(listItem);}});Console.WriteLine("P

c# - 使用 Parallel.ForEach() 的 yield return 的线程安全

考虑以下代码示例,它创建一个可枚举的整数集合并并行处理它:usingSystem.Collections.Generic;usingSystem.Threading.Tasks;publicclassProgram{publicstaticvoidMain(){Parallel.ForEach(CreateItems(100),item=>ProcessItem(item));}privatestaticIEnumerableCreateItems(intcount){for(inti=0;i是否保证Parallel.ForEach()生成的工作线程每个都获得不同的项目,或者是否需要一

c# - WPF 数据网格 : DataGridComboxBox ItemsSource Binding to a Collection of Collections

情况:我在XAML中创建了一个DataGrid,并且ItemsSource绑定(bind)到包含属性的特定类的ObservableCollection。然后在C#中,我创建了一个DataGridTextColumn和一个DataGridComboBoxColumn,并将它们绑定(bind)到ObservableCollection中对象的属性。我可以将DataGridComboBoxColumn绑定(bind)到一个简单的Collection,但我想要做的是将它绑定(bind)到一个字符串集合的集合,这样对于每一行,DataGrid中的ComboBox都有一个不同的字符串集合。我没有这

c# - NUnit 3 : Forbid tests to run in parallel

我安装了最新的NUnit(3.2.0),并且所有测试都并行运行。它可能看起来像是理想的行为,但我并没有要求它,实际上它破坏了我的一些测试。我在[OneTimeSetUp]中进行了一些依赖于线程的初始化,似乎我无法做任何事情来强制NUnit按顺序运行我的测试。我读过documentation它指出默认情况下测试不是并行运行的,但实际上它们是!此外,我尝试添加以下属性:[assembly:Parallelizable(ParallelScope.None)]—没有成功。有人知道如何改变这种行为吗?附言我使用ReSharper运行它,但也尝试使用MSVS插件。UPD:我正在使用MVVMLig

c# - "Items collection cannot be modified when the DataSource property is set."

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。通过表单将文件添加到txt文件的程序有这个问题,但这个问题没有说明Fstream的任何内容,所以我认为它不必处理它,但我不确定是什么这个问题的意思是。lstEmployees.Items.Add("Norecordsfound.");

c# - 使用 Parallel ForEach 进行本地初始化如何工作?

我不确定Parallel.ForEach中本地init函数的使用,如msdn文章中所述:http://msdn.microsoft.com/en-us/library/dd997393.aspxParallel.ForEach(nums,//sourcecollection()=>0,//methodtoinitializethelocalvariable(j,loop,subtotal)=>//methodinvokedbythelooponeachiteration{subtotal+=nums[j];//modifylocalvariablereturnsubtotal;//va

C# GC.Collect 如果对象是使用实例构造函数初始值设定项构造的,则不会销毁该对象

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:ResurrectiondifferenceinusingObjectInitializer我很难理解垃圾收集器在C#中的工作原理(我使用的是2012,所以是c#4.5)。这是我的示例代码:publicclassA{publicintc;publicA(){}publicA(intpC){c=pC;}}publicstaticvoidMain(){//Test1vara=newA{c=199};varaRef=newWeakReference(a);a=null;Console.WriteLine(aRef.I

c# - System.Collections.Generic.List<T> 需要 '1' 类型参数

我在以下代码中遇到此错误:string[]colors={"green","brown","blue","red"};varlist=newList(colors);IEnumerablequery=list.Where(c=>c.length==3);list.Remove("red");Console.WriteLine(query.Count());此外,Count()似乎不再被允许。它被弃用了吗? 最佳答案 您正在尝试创建一个List你应该告诉编译器varlist=newList(colors);没有List,有一个名为Li

C#:在 ASP.NET 中向 Parallel.ForEach() 添加上下文

我有一个带有静态get属性的静态类,在这个属性中,我这样做://propertybody{//HttpContext.CurrentisNOTnull...Parallel.ForEach(files,file=>{//HttpContext.Currentisnullvarpromo=newPromotion();...});...//HttpContext.CurrentisNOTnull}在View使用此属性之前,此静态类不会进行类型初始化。问题在于Promotion的静态构造函数,它是在Parallel.ForEach()中第一次创建newPromotion()时初始化的,使用