Tag: C#的

gcc -g vs不是-g和strip与不带,性能和内存使用情况?

如果二进制文件大小不是问题,那么使用-g而不是在脱离性能的关键环境中运行二进制文件会有什么缺点? 我有很多的磁盘空间,但二进制是密集的CPU,并使用大量的内存。 该二进制文件被加载一次,并活着几个小时。 编辑: 我想使用带有debugging信息的二进制文件的原因是在发生分段错误时生成有用的核心转储文件。

使用受保护的析构函数dynamic分配类数组

如果我有一个类定义类似 class A { protected: ~A(){ } }; 那么我可以dynamic地分配个人以及对象的数组 A* ptr1 = new A; A* ptr2 = new A[10]; 但是,当我定义这个类的构造函数 class A { public: A(){} protected: ~A(){ } }; 那么我可以创build个人对象 A* ptr = new A; 但是当我尝试dynamic分配对象的数组 A* ptr = new A[10]; 编译器(gcc-5.1和Visual Studio 2015)开始抱怨A ::〜A()是不可访问的。 任何人都可以解释一下: 1-为什么在构造函数被定义和未定义的行为的差异。 2-当构造函数被定义为什么我被允许创build单个对象而不是对象数组。

生成.NET崩溃自动转储

我知道如何使用ADPlus或DebugDiag生成崩溃转储文件,但我想知道是否有办法在客户的计算机上执行此操作,而无需安装这些工具…具体而言,我希望能够configuration我的应用程序使用registry值,例如)在严重故障的情况下生成故障转储。 更具体地说,我需要能够从C#应用程序做到这一点,但如果有必要,我不介意P / Invoke。 谢谢!

抽象属性与公共getter,定义私人setter在具体类可能吗?

我试图创build一个抽象类,定义一个属性与getter。 我想把它留给派生类来决定是否要为这个属性实现一个setter。 这可能吗? 我到目前为止: public abstract class AbstractClass { public abstract string Value { get; } public void DoSomething() { Console.WriteLine(Value); } } public class ConcreteClass1 : AbstractClass { public override string Value { get; set; } } public class ConcreteClass2 : AbstractClass { private string _value; public override string Value { get { return […]

Async WebApi Thread.CurrentCulture

我有一个自我托pipe的OWIN托pipe的Web API项目,为我提供了一些基本的REST方法。 我想要多语言的错误消息,所以我使用资源文件和一个BaseController将Thread.CurrentCulture和Thread.CurrentUICulture设置为请求的Accept-Language标头。 public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) { if (controllerContext.Request.Headers.AcceptLanguage != null && controllerContext.Request.Headers.AcceptLanguage.Count > 0) { string language = controllerContext.Request.Headers.AcceptLanguage.First().Value; var culture = CultureInfo.CreateSpecificCulture(language); Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; } base.ExecuteAsync(controllerContext, cancellationToken); } 这一切都很好,但问题出现,如果我使我的控制器方法asynchronous 。 当我在方法中使用await时,它可能会在另一个线程中继续,所以CurrentCulture和CurrentUICulture将会丢失。 这是我用来find这个问题的一个小例子。 public async Task<HttpResponseMessage> PostData(MyData data) { Thread currentThread = Thread.CurrentThread; await SomeThing(); if […]

是否有可能以编程方式生成仅使用C#的X509证书?

我们正尝试使用C#和BouncyCastle库以编程方式生成X509证书(包括私钥)。 我们已经尝试使用Felix Kollmann的这个示例中的一些代码,但是证书的私钥部分返回null。 代码和unit testing如下: using System; using System.Collections; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.Prng; using Org.BouncyCastle.Math; using Org.BouncyCastle.Security; using Org.BouncyCastle.X509; namespace MyApp { public class CertificateGenerator { /// <summary> /// /// </summary> /// <remarks>Based on <see cref="http://www.fkollmann.de/v2/post/Creating-certificates-using-BouncyCastle.aspx"/></remarks> /// <param name="subjectName"></param> /// <returns></returns> public static byte[] GenerateCertificate(string subjectName) { var kpgen […]

什么是Windows服务失败的正确方法?

我inheritance了用C#编写的Windows服务。 在罕见的情况下,它失败了。 但是,如何很好地完成还不是很清楚。 Ross Bennett在bytes.com上陈述了这个问题。 为了简单起见,我会在这里引用他的话。 嗨,伙计! 我一直在寻找这个,但我似乎无法动摇任何MSDN或谷歌文件。 我已经在我find的MSDN中查看了关于开发Windows服务的每篇.NET文章。 我正在开发一个Windows服务应用程序。 该服务从系统registry(HKLM)读取其configuration数据,由另一个“pipe理”应用程序存放。 那里没有问题。 该服务使用工作线程来完成其工作。 该线程在OnStart()中创build,并在OnStop()中发送信号/连接/放置。 再次,没有问题。 以下情况下,一切都很好用 系统pipe理员已经正确设置了一切,并且 外网资源全部可达。 但是当然,我们作为开发者根本就不能依靠: 系统pipe理员已经正确设置了一切,或者 外部networking资源可达。 真的,我们需要的是服务应用程序有自己的死亡方式。 如果networking资源瘫痪,我们需要停止服务。 但更重要的是,我们需要SCM知道它已经自行停止了。 供应链pipe理需要知道服务“失败”……并不只是被某个人closures。 在“OnStart()”方法中调用“return”或抛出exception对于仍处于启动过程中的服务甚至没有帮助。SCM快乐地开启并且进程在任务pipe理器中保持运行 – 尽pipe它实际上没有做任何事情,因为工作线程从未被创build和启动。 使用ServiceController实例也不这样做。 SCM看起来像是正常关机 – 而不是服务故障。 因此,没有发生恢复操作或重新启动。 (另外,有一个MSDNful文档警告使用ServiceController来使事情与自身发生有关的ServiceBase后代的危险。) 我已经阅读过文章,人们正在使用PInvoking调用本地代码,只是在SCM中设置“停止”状态标志。 但是这并没有closures服务运行的过程。 我真的很想知道的意图: 在服务内closures服务,在哪里 SCM被专门通知服务已经“停止”了 该过程从任务pipe理器中消失。 涉及ServiceControllers的解决scheme似乎并不合适,如果只是因为2不满意。 (顺便说一下,框架文档明确禁止这样做会带来很大的分量。) 我会很感激任何build议,文档的指针,甚至是合理的猜测。 :-)哦! 我非常乐意接受我错过了这个观点。 最诚挚的, Ross Bennett

NotNull属性

我正在查看asp.net vnext 工程指南 ,并注意到他们build议使用NotNull属性,而不是显式检查input参数为空,并抛出ArgumentNullException 。 让我感到困惑的是,基于这个准则,只需要声明这个属性,并且在编译时将检查代码生成到方法体中。 我试图在我的testing项目中做到这一点,但魔术没有发生,即它抛出exceptionSystem.NullReferenceException而不是System.ArgumentNullException 。 这应该如何工作? 他们打算在编译时使用一些AOP库来注入检查代码吗?

从像素数据的字节数组创build位图

这个问题是关于如何读/写,分配和pipe理位图的像素数据。 以下是如何为像素数据分配字节数组(pipe理内存)并使用它创build位图的示例: Size size = new Size(800, 600); PixelFormat pxFormat = PixelFormat.Format8bppIndexed; //Get the stride, in this case it will have the same length of the width. //Because the image Pixel format is 1 Byte/pixel. //Usually stride = "ByterPerPixel"*Width //但这并不总是如此。 更多信息在bobpowell 。 int stride = GetStride(size.Width, pxFormat); byte[] data = new byte[stride * size.Height]; GCHandle […]

为C#代码创buildhtml文档

我通常不做任何C#开发,所以请原谅我的noobness,但我目前正在一个C#项目和VisualAssist生成这些花哨/// <summary></summary>评论,我一直在使用它们logging我的代码。 我假设必须有一种方法来使用这个注释来创build一个像Doxygen或Javadoc完成的HTML文档。 我怎么做的?