草庐IT

parallel-collections

全部标签

c# - 检查 Collection 中的所有项目是否具有相同的值

名为MeasurementCollection的集合的扩展方法检查每个项目的属性Template.Frequency(Enum)是否具有相同的值。publicstaticboolIsQuantized(thisMeasurementCollectionitems){return(fromiinitemsselecti.Template.Frequency).Distinct().Count()==1;}编辑关于底层类的信息MeasurementCollection:ICollectionIMeasurement{IMeasurementTemplateTemplate{get;}...

c# - 等于 System.Collections.Generic.List<T>... 的方法?

我正在创建一个派生自List的类...publicclassMyList:List{}我已经覆盖了MyListItem的Equals...publicoverrideboolEquals(objectobj){MyListItemli=objasMyListItem;return(ID==li.ID);//IDisapropertyofMyListItem}我也想在MyList对象中有一个Equals方法,它将比较列表中的每个项目,在每个MyListItem对象上调用Equals()。简单地调用...会很好MyListl1=newMyList(){newMyListItem(1),ne

c# - 可以锁定 System.Collections.Generic.List<t> 吗?

我一直在阅读有关syncroot元素的信息,但我在List类型中找不到它。那么System.Collections.Generic.List类型应该如何进行多线程同步呢? 最佳答案 你找不到它的原因是因为它是explicitlyremoved.如果它真的是你想做的,使用SynchronizedCollection或者创建一个专用的同步对象。最好的方法(通常)是创建一个专用的同步对象,正如Winston所说明的那样。SyncRoot的本质问题特性是它提供了一种错误的安全感——它只能处理非常有限的情况。开发人员经常忽略整个逻辑操作的同步

c# - Xunit.Assert.Collection 中的问题 - C#

我有一个类库,它包含以下模型和方法型号:publicclassEmployee{publicintEmpId{get;set;}publicstringName{get;set;}}方法:publicclassEmployeeService{publicListGetEmployee(){returnnewList(){newEmployee(){EmpId=1,Name="John"},newEmployee(){EmpId=2,Name="AlbertJohn"},newEmployee(){EmpId=3,Name="Emma"},}.Where(m=>m.Name.Contai

c# - Task.Factory.StartNew 或 Parallel.ForEach 用于许多长时间运行的任务?

这个问题在这里已经有了答案:9年前关闭。PossibleDuplicate:Parallel.ForEachvsTask.Factory.StartNew我需要在ThreadPool中运行大约1,000个任务每晚一次(这个数字将来可能会增加)。每个任务都在执行长时间运行的操作(从Web服务读取数据)并且是非CPU密集型.AsyncI/O不是此特定用例的选项。给定一个IList参数,我需要DoSomething(stringx).我试图在以下两个选项之间进行选择:IListtasks=newList();foreach(varpinparameters){tasks.Add(Task.F

c# - Collection<T> 是封装 IList<T> 还是枚举 IList<T>?

如果我通过Collection属性公开内部成员:publicCollectionEntries{get{returnnewCollection(this.fieldImplimentingIList);}}当这个属性被调用时会发生什么?例如,调用以下代码行时会发生什么:Ttest=instanceOfAbove.Entries[i];instanceOfAbove[i]=valueOfTypeT;很明显,每次调用此属性时都会创建一个新的引用类型,但实际发生了什么?它只是包装IList吗?在下面,它是否枚举了IList并创建一个新的Collection实例?如果在for中使用此属性,我会

c# - 如何使用Task Parallel Library(TPL)实现重试逻辑

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Retryataskmultipletimesbasedonuserinputincaseofanexceptionintask我正在寻找一种在TPL中实现重试逻辑的方法。我想要一个通用的函数/类,它能够返回一个任务,该任务将执行给定的操作,并且在出现异常的情况下将重试该任务,直到给定的重试次数为止。我尝试使用ContinueWith并在出现异常时让回调创建一个新任务,但它似乎只适用于固定数量的重试。有什么建议吗?privatestaticvoidMain(){TasktaskWithRetry=Create

c# - Parallel.ForEach 丢失数据

Parallel.ForEach有助于提高性能,但是,我发现数据丢失了。已尝试-变量结果、处理数据为ConcurrentBag1)Parallel.ForEach(results,()=>newConcurrentBag(),(n,loopState,localData)=>{returnProcessData(n);//ProcessDatacomplicatedbusinesslogic},(localData)=>AddRows(localData,processedData,obj));2)awaitTask.Run(()=>Parallel.ForEach(results,i

c# - 为什么此 XAML 收到错误 : Items collection must be empty before using ItemsSource

任何人都可以从这段代码中联想到为什么ItemsSource行会得到一个ItemscollectionmustbeemptybeforeusingItemsSource.错误?我发现的大多数解决方案都指向错误组合的XAML,例如我似乎没有的额外元素等。当我拿出来的时候ItemsSource="{BindingCustomers}"它运行没有错误(但当然不会显示我的客户列表)。Customers在ViewModel中这样定义,其中有3个CustomerViewModels:Customer[]customers=Customer.GetCustomers();IEnumerablecust

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

跟踪以下进度的最佳方式是什么longtotal=Products.LongCount();longcurrent=0;doubleProgress=0.0;Parallel.ForEach(Products,product=>{try{varprice=GetPrice(SystemAccount,product);SavePrice(product,price);}finally{Interlocked.Decrement(refthis.current);}});我想将进度变量从0.0更新到1.0(当前/总计),但我不想使用任何会对并行性产生不利影响的东西。