Tag: .net 4.0

GetSystemMetrics()为.NET 4.5和.NET 4.0返回不同的结果

在.NET 4.0 – > .NET 4.5应用程序迁移过程中,我发现了一种非常奇怪的行为。 我已经能够将这个问题跟踪到这个简短的代码片段: class Program { [System.Runtime.InteropServices.DllImport(“user32.dll”)] public static extern int GetSystemMetrics(int nIndex); static void Main(string[] args) { const int CXFRAME = 0x20; const int CYFRAME = 0x21; var dx = GetSystemMetrics(CXFRAME); var dy = GetSystemMetrics(CYFRAME); Console.WriteLine(“{0}x{1}”, dx, dy); Console.ReadKey(); } } 使用Target Framework = 4.0 (以及2.0,3.0,3.5)进行编译时,它输出8×8 使用Target Framework = 4.5编译时,它输出4×4 […]

使用Validator时忽略.NET 4 RTM MetadataType属性

我正在使用VS 2010 RTM并尝试使用MetadataTypeAttribute对简单类型执行一些基本validation。 当我将validation属性放在主类上时,一切正常。 但是,当我把它放在元数据类上时,它似乎被忽略了。 我一定是错过了一些微不足道的东西,但我现在已经坚持了一段时间。 我查看了Enterprise Libraryvalidation块作为一种解决方法,但它不支持开箱即用的单个属性validation。 有任何想法吗? class Program { static void Main(string[] args) { Stuff t = new Stuff(); try { Validator.ValidateProperty(tX, new ValidationContext(t, null, null) { MemberName = “X” }); Console.WriteLine(“Failed!”); } catch (ValidationException) { Console.WriteLine(“Succeeded!”); } } } [MetadataType(typeof(StuffMetadata))] public class Stuff { //[Required] //works here public string X { […]

为什么Path.Combine会使用相对路径生成此结果?

令我惊讶的是,此代码不会产生预期的结果: var basePath = @”\\server\BaseFolder”; var relativePath = @”\My\Relative\Folder”; var combinedPath = Path.Combine(basePath, relativePath); 结果是\My\Relative\Folder而不是预期的\\server\BaseFolder\My\Relative\Folder 。 为什么是这样? 将相对路径组合在一起的最佳方法是什么?这些路径可能有也可能没有斜线? 编辑:我知道我可以在relativePath上进行字符串操作来检测并删除起始斜杠。 有没有一种更安全的方法(我认为Path.Combine应该是安全的方式)来解释反斜杠和前沿?

在C#中处理大型文本文件

我有4GB +文本文件(csv格式),我想在c#中使用linq处理这个文件。 我在加载csv后运行复杂的linq查询并转换为类? 但是文件大小是4GB,尽管应用程序内存是文件的双倍大小。 我如何处理(linq和新结果)大文件? 谢谢

如何使用XmlSerializer序列化Object类型的属性

我有一个属性: public object Tag 但它可以包含有限数量的类型,遗憾的是没有基类型(对象类型除外)。 但是当我使用此属性序列化对象时,它不会被序列化。 有没有办法用可能的类型指示XmlSerializer?

内存缓存.Net 4.0性能测试:惊人的结果

此性能测试是错误的还是系统缓存正在以卓越的性能运行? 这是我的结果: [13]交互次数100000:63毫秒 [14]交互次数100000:139毫秒 [12]交互次数100000:47毫秒 [15]交互次数100000:44毫秒 测试结束。 硬件:x86 Family 6 Model 23 Stepping GenuineIntel~2992 Mhz 3.327 MB,5.1.2600 Service Pack 3 using System; using System.Collections.Generic; using System.Runtime.Caching; using System.Diagnostics; using System.Threading; namespace CacheNet40 { public class CacheTest { private ObjectCache cache; public CacheTest() { cache = MemoryCache.Default; } public void AddItem(CacheItem item, double span) { CacheItemPolicy […]

二维Integer数组到DataGridView

我如何在C#.Net 4.0中的DataGridView控件中显示二维整数数组?

何时使用volatile来抵消C#中的编译器优化

我花了很多周时间在C#4.0中进行multithreading编码。 但是,有一个问题对我来说仍然没有答案。 我知道volatile关键字阻止编译器将变量存储在寄存器中,从而避免无意中读取过时值。 写入在.Net中始终是易变的,因此任何说明它也避免了stales写入的文档都是多余的。 我也知道编译器优化有些“不可预测”。 以下代码将说明由于编译器优化而导致的停顿(在VS之外运行发布编译时): class Test { public struct Data { public int _loop; } public static Data data; public static void Main() { data._loop = 1; Test test1 = new Test(); new Thread(() => { data._loop = 0; } ).Start(); do { if (data._loop != 1) { break; } //Thread.Yield(); } while […]

在.NET 4.0应用程序域上加载针对.NET 4.5的程序集

假设系统安装了.NET 4.0和.NET 4.5。 是否可以从针对.NET 4.0编写的程序集中加载和使用.NET 4.5程序集? 简单地说,我可以从.NET 4.0代码调用Assembly.Load来加载.NET 4.5目标程序集吗?

有没有办法全局更改wpf中绑定的默认行为?

有没有办法改变绑定的默认行为,所以我不需要在每个文件框中设置’UpdateSourceTrigger = PropertyChanged’? 这可以通过ControlTemplate或Style完成吗?