Tag: .net 4.5

大对象堆压缩,什么时候好?

首先,有多大被认为是大的? 反正有没有确定一个对象在堆中的大小? .Net 4.5.1附带了这个LargeObjectHeapCompactionMode : 在将LargeObjectHeapCompactionMode属性设置为GCLargeObjectHeapCompactionMode.CompactOnce之后,下一个完全阻塞垃圾收集(以及LOH的压缩)将在不确定的未来时间发生。 您可以使用以下代码立即压缩LOH: GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; 从我所听到的,压缩LOH是件坏事! 那么哪一个最差? 紧凑型LOH或LOH碎裂?

由于名称相同,无法添加引用

自从VS 2013更新以来,我的行为是我无法添加对具有相同名称的2个项目的引用。 我做了以下事情: 添加了3个解决方案文件夹A,B和C. 在A和B文件夹中添加了类库“Core”的项目。 向文件夹C添加了ConsoleApplication类型的项目。 结果结构如下所示: Solution + A + Core + B + Core + C + ConsoleApp 在A的项目属性中输入以下内容: 大会名称:A.Core 默认命名空间:A.Core 在B: 大会名称:B.Core 默认命名空间:B.Core 在C.ConsoleApp中添加对A.Core的引用之后,我尝试将B.Core引用到控制台,我得到错误: 无法添加对“核心(B.Core)”的引用。 项目中已存在对组件“Core”的引用。 该解决方案是使用VS 2012创建的,并在升级后显示此行为。 我在控制台内设置了什么? 编辑:我在Youtube上发布了一个截屏video来解释这个问题并在Microsoft支持中添加了一个错误。 我仍然认为,这是一个错误。

安装文件的位置 – Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5

请耐心等待我,我会尽可能清楚地解释。 我创建了一个新项目(类库),其目标是4.5而不是客户端配置文件4.5。 我添加了一个引用“System.Runtime.Serialization”,属性表明它位于“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5 \ System.Runtime.Serialization.dll”的位置 在我的电脑上,使用msbuild编译构建脚本可以很好地编译。 在使用团队城市的构建服务器上 – 它抱怨 错误CS0012:类型’System.Object’在未引用的程序集中定义。 您必须添加对程序集’System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’的引用 buildserver安装了完整的.net框架 – “dotnetfx45_full_x86_x64.exe” 唯一一次构建的是我将我的“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5”版本复制到目标机器上。 我已经使用此链接进行了检查并安装了.net 4.5 – http://myspworld.wordpress.com/2012/10/18/how-to-check-if-net-4-5-is-installed-on-a -服务器/ 我问两个问题:1。如何安装? 2.如果它确实在这个位置找到它肯定应该在GAC中查找? 将不胜感激任何帮助。

异步友好的DispatcherTimer包装器/子类

我在我的代码中运行一个DispatcherTimer ,每30秒触发一次,从服务器更新系统状态。 即使我正在调试我的服务器代码,计时器也会在客户端中触发,所以如果我已经调试了5分钟,我可能会在客户端中进行十几次超时。 最后决定我需要解决这个问题,以便制作一个更加async / await友好的DispatcherTimer。 在DispatcherTimer运行的代码必须是可配置的,无论它是否是可重入的(即,如果任务已在运行,则不应尝试再次运行它) 应该是基于任务的(这是否需要我实际上在根处公开Task是一个灰色区域) 应该能够运行异步代码并await任务完成 无论是包装还是扩展DispatcherTimer可能并不重要,但如果您不知道如何使用它,包装它可能会稍微不那么模糊 可能为UI的IsRunning公开可绑定属性

为什么等待异步这么慢?

我终于得到了VS2012并得到了一个简单的演示,并努力检查异步的潜在性能提升并等待,但令我沮丧的是它更慢! 它可能我做错了,但也许你可以帮助我。 (我还添加了一个简单的Threaded解决方案,并且按预期运行得更快) 我的代码使用一个类来根据系统中的内核数量对数组求和(-1)我有4个内核,所以我看到了大约2倍的加速(2.5个线程)用于线程,但是减少了2倍的速度同样的事情,但使用async / await。 代码:(注意,您需要添加对System.Management的引用以使核心检测器工作) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.Management; using System.Diagnostics; namespace AsyncSum { class Program { static string Results = “”; static void Main(string[] args) { Task t = Run(); t.Wait(); Console.WriteLine(Results); Console.ReadKey(); } static async Task Run() { Random random = […]

使用MultipartFormDataContent生成错误的Content-Type标头

我有以下代码: private static string boundary = “—-CustomBoundary” + DateTime.Now.Ticks.ToString(“x”); private static async Task PostTest() { string servResp = “”; using (var content = new MultipartFormDataContent(boundary)) { content.Add(new StringContent(“105212”), “case-id”); content.Add(new StringContent(“1/14/2014”), “dateFrom”); content.Add(new StringContent(“1/15/2014”), “dateTo”); HttpClientHandler handler = new HttpClientHandler(); cookieContainer = new CookieContainer(); handler.CookieContainer = cookieContainer; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, “http://somewebsite.com/form”); request.Headers.ExpectContinue = […]

使用DataContractJsonSerializer将JSON反序列化为Dictionary

我在响应中收到以下JSON结果: {“result”: { “”:-41.41, “ABC”:0.07, “XYZ”:0.00, “Test”:0.00 }} 我准备了以下用于反序列化的课程: [DataContract] public sealed class RpcResponse { [DataMember(Name = “result”)] public List<KeyValuePair> Result { get; set; } } 但是,当我要使用DataContractJsonSerializer对其进行反序列化时, Result属性最终为零条目。 (在将Result声明为Dictionary时也不起作用) 有没有办法用DataContractJsonSerializer执行此操作?

定制等待傻瓜

在Async / Await FAQ中 ,Stephen Toub说: 等待是暴露GetAwaiter方法的任何类型,该方法返回有效的awaiter 。 … awaiter是从等待的GetAwaiter方法返回的任何类型,并且符合特定模式。 因此,为了成为awaiter ,类型应该: 实现INotifyCompletion接口。 提供名为IsCompleted的布尔属性。 提供一个无参数的GetResult方法,该方法返回void或TResult 。 ( 我现在忽略了ICriticalNotifyCompletion 。 ) 我知道我提到的页面有一个示例,显示编译器如何转换等待操作,但我很难理解。 当我等待等待 时 , 何时检查IsCompleted ? 我应该在哪里设置它? 何时被OnCompleted调用? 哪个线程调用OnCompleted ? 我看到了直接调用OnCompleted的continuation参数和在不同示例中使用Task.Run(continuation)的示例,我应该选择哪个以及为什么?

WPF控制 – 是否应该不惜一切代价避免代码?

我有一个WPF项目,需要创建一个特定于域的控件,但将在多个视图中重用。 控件必须以3个部分显示小数值,整数部分和小数部分分成2个不同的字体大小。 我有一个Amount的依赖属性,然后在后面的代码中分成3个部分的数量,所以我可以在特定的标签中显示它们。 我还使用小数量来决定金额是上升还是下降,然后更改控件的背景颜色。 所有这些都是在后面的代码中完成的。 我知道有人说背后的代码是邪恶的,我在大多数情况下都同意。 但是你会如何实现呢?

.Net zlib使用.Net 4.5进行扩充

根据MSDN的.Net 4.5 System.IO.Compression基于zlib。 我现在正在尝试将当前基于互操作的读取从非.NET服务器中的zlib放气流更改为基于BCL的实现。 我的实现看起来像这样: var enc = new UTF8Encoding(); var readBytes = BufferSizeRaw; var outputBuffer = new byte[BufferSizeRaw]; var networkBuffer = _networkQueue.Take(); var ms = new MemoryStream(networkBuffer.InputBuffer, 0, networkBuffer.UsedLength); using (Stream stream = new DeflateStream(ms, CompressionMode.Decompress)) while (readBytes==BufferSizeRaw) { readBytes = stream.Read(outputBuffer, 0, outputBuffer.Length); stringBuffer+= enc.GetString(outputBuffer, 0, readBytes); } 我在DeflateStream上第一次调用解压缩/读取时收到以下exception: 块长度与其补码不匹配 基于互操作的调用使用var result=inflate(ref zStyream, […]