草庐IT

collection_check_boxes

全部标签

c# - 第三方库中麻烦的 GC.collect() 调用

在分析我的应用程序(C#、.NET4)时,我注意到我正在使用的第三方库显式调用了GC.Collect()。这非常烦人,因为它有时会对我的应用程序性能产生巨大影响,因为对该库的一些调用最终会陷入巨大的循环:花在GC.Collect上的时间占总执行时间的80%以上。当然,我向库维护者报告了这种行为(库不是开源的),但是当他们正在开发新版本时,我想优化我的应用程序。我能做什么?我尝试通过将GCSettings.LatencyMode设置为GCLatencyMode.LowLatency来配置GC(当然,仅在执行库调用期间),但无济于事。我宁愿避免fork我的过程。有什么想法吗?

c# - 在运行内部代码之前,在锁之前和锁内设置 "double check"是否可以?

在处理线程安全时,我发现自己总是在执行锁block中的代码之前“仔细检查”,我想知道自己是否做对了。考虑以下三种做同样事情的方法:示例1:privatestaticSomeCollectionMyCollection;privatestaticObjectlocker;privatevoidDoSomething(stringkey){if(MyCollection[key]==null){lock(locker){MyCollection[key]=DoSomethingExpensive();}}DoSomethingWithResult(MyCollection[key]);}示

c# - .NET 4.0 System.Collections.Concurrent 集合在 .NET 3.0 SynchronizedCollection 的功能中添加了什么?

.NET4.0引入了System.Collections.Concurrent命名空间:"TheSystem.Collections.Concurrentnamespaceprovidesseveralthread-safecollectionclassesthatshouldbeusedinplaceofthecorrespondingtypesintheSystem.CollectionsandSystem.Collections.Genericnamespaceswhenevermultiplethreadsareaccessingthecollectionconcurrentl

c# - .NET 配置文件 : How to check if ConfigSection is present

考虑:行:block:假设该行在.config文件中可用,而该block丢失。如何以编程方式检查block是否存在?[编辑]对于那些迅速将问题标记为否定的天才们:我已经试过了ConfigurationManager.GetSection()和varconfig=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);varsection=config.GetSection("unity");varsInfo=section.SectionInformation;varisDeclared=sInfo.

c# - 具有泛型的对象类型中的 "apostrophe + number"是什么意思(例如 "Collection` 1")?

我有一个对象(MyObject)和一个属性(MyProperty)。我想获取它的类型名称(即String或MyClass等)。我使用:PropertyInfopropInfo=typeof(MyObject).GetProperty("MyProperty");Console.WriteLine(propInfo.PropertyType.Name);Console.WriteLine(propInfo.PropertyType.FullName);简单类型没问题,但当MyProperty是通用类型,我在获取它的名称时遇到问题(例如Collection)。它打印:Collection`

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# - 为什么为泛型发出 'box' 指令?

这是一个相当简单的泛型类。泛型参数被限制为引用类型。IRepository和DbSet也包含相同的约束。publicclassRepository:IRepositorywhereTEntity:class,IEntity{protectedreadonlyDbSet_dbSet;publicvoidInsert(TEntityentity){if(entity==null)thrownewArgumentNullException("entity","Cannotaddnullentity.");_dbSet.Add(entity);}}编译后的IL包含box指令。这是发布版本(调试

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