草庐IT

c# - 泛型方法可以处理引用和可空值类型吗?

我有一系列扩展方法来帮助对IDataRecord对象进行空值检查,我目前是这样实现的:publicstaticint?GetNullableInt32(thisIDataRecorddr,intordinal){int?nullInt=null;returndr.IsDBNull(ordinal)?nullInt:dr.GetInt32(ordinal);}publicstaticint?GetNullableInt32(thisIDataRecorddr,stringfieldname){intordinal=dr.GetOrdinal(fieldname);returndr.Get

c# - 为什么 WebApi Controller 运行后没有人处理 DbContext?

我知道各种教程以及针对WebApi和EntityFramework(甚至来自Microsoft)的完整示例,它们具有WebApiController,例如这个:publicHttpResponseMessageGetInternet(intid){varcontext=newInternetDbContext();varresult=(frominternetincontext.Internetswhereinternet.Id.Equals(id)selectinternet).FirstOrDefault();if(result!=null)Request.CreateRespon

c# - SEHException 未处理

我有一个昨天运行良好的vs2010c#解决方案。当我今天尝试运行调试实例时,我不断收到未处理的SEHException。此错误是在启动窗体的InitializeComponent方法中引发的。有什么想法吗?这是堆栈跟踪:System.Runtime.InteropServices.SEHExceptionwasunhandledMessage=Externalcomponenthasthrownanexception.Source=System.DrawingErrorCode=-2147467259StackTrace:atSystem.Drawing.SafeNativeMetho

c# - 如何覆盖 Owin 中默认的未处理异常输出?

我使用Owin自托管和WebApi编写了简单的服务器:namespaceOwinSelfHostingTest{usingSystem.Threading;usingSystem.Web.Http;usingMicrosoft.Owin.Hosting;usingOwin;publicclassStartup{publicvoidConfiguration(IAppBuilderbuilder){varconfig=newHttpConfiguration();config.Routes.MapHttpRoute("Default","{controller}/{id}",new{id

c# - 如何避免使用 async void 事件处理程序重入?

在WPF应用程序中,我有一个通过网络接收消息的类。每当所述类的对象收到一条完整的消息时,就会引发一个事件。在应用程序的主窗口中,我有一个事件处理程序订阅了该事件。保证在应用程序的GUI线程上调用事件处理程序。无论何时调用事件处理程序,都需要将消息的内容应用于模型。这样做可能会非常昂贵(在当前硬件上>200ms)。这就是使用Task.Run将应用消息卸载到线程池的原因。现在,可以非常连续地接收消息,因此可以在仍在处理之前的更改时调用事件处理程序。确保一次只应用一条消息的最简单方法是什么?到目前为止,我已经得出以下结论:usingSystem;usingSystem.Threading.T

c# - 如何并行处理内存映射文件中的数据

正如内存映射文件的名称所示,我知道可以使用C#中的MemoryMappedFile类将大文件的一部分映射到内存,以实现快速数据处理。我想对内存映射文件做的是并行处理内存映射。为了做到这一点,我有以下问题MemoryMappedFileViewAccessor是线程安全的还是Parallel.For安全的?我实际上制作了一个演示程序来测试这个问题,它似乎在工作。但是找不到关于此的任何引用。如果答案是肯定的,我就完成了。否则,有什么方法可以直接访问数组映射的内存吗?我知道MemoryMappedFileViewAccessor有ReadArray方法,但使用该方法是内存的重复。

c# - 在 .Net 中是否有可能在类中的任何方法传递给调用堆栈之前捕获所有未处理的异常?

问题:我想捕获来自类中任何方法的任何异常,以便我可以将类特定数据记录到异常中,以便在将其向上传递到堆栈之前进行日志记录。我知道我可以在类的每个方法中放置一个try-catch,但是方法有很多而且似乎应该有更有效的方法。我目前正在做的事情的例子:publicclassClassA{privateintx;privateinty;publicvoidMethod1(){try{//Somecode}catch(Exceptionex){ex.Data.Add("x",x);ex.Data.Add("y",y);throw;}}publicvoidMethod2(){try{//Someco

c# - 关闭 WPF 应用程序时出现未处理的 NullReference 异常

当我关闭最后一个窗口时,我的应用程序中出现未处理的异常:Anunhandledexceptionoftype'System.NullReferenceException'occurredinPresentationFramework.dllAdditionalinformation:Objectreferencenotsettoaninstanceofanobject.只有在应用程序的生命周期中,我通过我设置的某个进程打开一个子窗口时才会发生这种情况。该窗口存在于另一个程序集中,该程序集在运行时使用MEF动态加载,然后使用CaSTLe进行实例化。如果我随后调用某个方法,它会创建一个新的

c# - 在 Xunit 中处理多个测试用例的首选方法是什么?

我已经从NUnit迁移到使用Xunit进行单元测试。使用NUnit,我将创建一个方法,其中包含具有相同结果的多个测试用例。例如,下面的NUnit单元测试测试类构造函数的验证,特别是“name”变量。名称不能为null、空或空格。该测试检查是否正确抛出ArgumentNullException:[Test][TestCase(null)][TestCase("")][TestCase("")][ExpectedException(typeof(ArgumentNullException))]publicvoidConstructor_InvalidName_ExceptionThrown

c# - 将 lambda 表达式用于事件处理程序的最佳实践

在发现lambda表达式并将它们用作匿名函数之后,我发现自己编写了很多更琐碎的事件,例如:txtLogin.GotFocus+=(o,e)=>{txtLogin.Text=string.Empty;txtLogin.ForeColor=SystemColors.ControlText;};txtLogin.LostFocus+=(o,e)=>{txtLogin.Text="Login...";txtLogin.ForeColor=SystemColors.InactiveCaptionText;};我也放弃了只调用其他函数的事件处理程序,将它们替换为执行相同操作的小型lambda:ba