草庐IT

c# - RX 和异常处理

我正在为一种进程中的消息总线使用响应式扩展。实现非常简单。注册的样子publicIDisposableRegister(Actionaction)whereT:IMessage{returnthis.subject.OfType().Subscribe(action);}然后简单地发送:privatevoidSendMessage(IMessagemessage){this.subject.OnNext(message);}但是我现在在RX的异常行为方面遇到了一些麻烦。一个异常在注册/订阅的操作中被抛出——Observable的“流”被破坏并且将不再订阅。由于此消息总线用于应用程序的两

c# - C DLL 中的 PInvoke char* 在 C# 中处理为字符串。空字符问题

CDLL中的函数如下所示:intmy_Funct(char*input,char*output);我必须从C#应用程序调用它。我通过以下方式执行此操作:...DllImportstuff...publicstaticexternintmy_Funct(stringinput,stringoutput);输入字符串完美地传输到DLL(我有可见的证据)。该函数填写的输出虽然是错误的。我有hexa数据,比如:3F-D9-00-01但不幸的是,两个零之后的所有内容都被截断了,只有前两个字节进入了我的C#应用程序。它发生了,因为(我猜)它被视为空字符并将其作为字符串的结尾。知道如何摆脱它吗?我试

c# - 从任何线程捕获未处理的异常

编辑这个问题的答案有帮助谢谢我很感激你的帮助:)但我最终使用了:http://code.msdn.microsoft.com/windowsdesktop/Handling-Unhandled-47492d0b#content原始问题:我想在我的应用程序崩溃时显示一条错误消息。目前我有:App.xaml:App.xaml的代码隐藏:namespaceWpfApplication5{publicpartialclassApp:Application{privatevoidApp_DispatcherUnhandledException(objectsender,DispatcherUnh

c# - Csv 阅读器异常未处理

我一直遇到这个错误:Anunhandledexceptionoftype'CsvHelper.CsvReaderException'occurredinCsvHelper.dllAdditionalinformation:Nopropertiesaremappedfortype'RPS_String_Parse.Program+FormattedRow'.但我相信我正在关注thedocumentation正确。在引用了“入门”部分后,我实现了这个:using(varsr=newStreamReader(filePath)){varcsv=newCsvReader(sr);varreco

c# - 多种形式的异常处理

我在调试时和在运行已编译的.exe时看到异常被捕获或未被捕获的不同行为。我有两种形式(Form1和Form2)。Form1上有一个按钮,它在Form2上实例化并调用ShowDialog。Form2上有一个按钮,它有意产生被零除的错误。当我调试时,命中了Form1中的catchblock。当我运行已编译的.exe时,它​​没有命中,而是出现一个消息框,指出“您的应用程序中发生了未处理的异常。如果您单击继续,应用程序将忽略此错误并尝试继续。如果您单击退出,应用程序将立即关闭...试图除以零”。我的问题是为什么在调试时和运行.exe时会出现不同的行为?如果这是预期的行为,那么是否认为有必要在

c# - 在已经登录的情况下处理登录期间的防伪造错误? ASP.NET MVC

当用户登录时,并转到登录页面。如果他再次尝试登录,您将收到防伪错误。Theanti-forgerytokencouldnotbedecrypted.IfthisapplicationishostedbyaWebFarmorcluster,ensurethatallmachinesarerunningthesameversionofASP.NETWebPagesandthattheconfigurationspecifiesexplicitencryptionandvalidationkeys.AutoGeneratecannotbeusedinacluster.我得到的另一种错误是:T

c# - 在 C# 中是否有一种很好的强类型方法来处理 PropertyChanged 事件?

更改属性名称一定是比较常见的事件,并且期望VisualStudio中的重命名功能能够处理所有必要的重命名,INotifyPropertyChanged的​​PropertyChanged事件的属性名称除外。有没有更好的方法以某种方式使其强类型化,这样您就不需要记住手动重命名它? 最佳答案 编辑:nameof到达了c#6。耶!没有nameof/infoof等;对此进行了很多讨论,但事实就是如此。有一种方法可以在.NET3.5中使用lambda表达式(并解析表达式树),但实际上不值得为此付出代价。现在,我只坚持使用字符串(如果您决心不破

c# - 方法绑定(bind)到外部库中的基方法无法处理新的虚拟方法 "between"

假设我有一个库,版本1.0.0,包含以下内容:publicclassClass1{publicvirtualvoidTest(){Console.WriteLine("Library:Class1-Test");Console.WriteLine("");}}publicclassClass2:Class1{}我在控制台应用程序中引用了这个库,内容如下:classProgram{staticvoidMain(string[]args){varc3=newClass3();c3.Test();Console.ReadKey();}}publicclassClass3:ClassLibra

c# - GridView 'OrdersGridView' 触发了未处理的事件 RowDeleting

我一遍又一遍地遇到这个错误。将数据加载到GridView中是可行的,但是当我想删除一行时,我遇到了那个错误。'>C#代码隐藏-我并没有真正从数据库中删除该行,但它是一个测试:protectedvoidOrdersGridView_RowDeleted(objectsender,System.Web.UI.WebControls.GridViewDeletedEventArgse){if(e.Exception!=null){lblStatus.Text=e.Exception.ToString();}else{stringsValue=((HiddenField)OrdersGridV

c# - 处理 DBNull.Value

我经常需要处理连接到网格控件的数据表,自定义更新似乎总是会产生大量与DBNull.Value相关的代码。我在这里看到了类似的问题,但认为一定有更好的答案:WhatisthebestwaytodealwithDBNull's我发现我倾向于将我的数据库更新封装在方法中,所以我最终得到如下代码,我将DBNull.value移动到可为null的类型,然后返回以进行更新:privatevoidUpdateRowEventHandler(objectsender,EventArgse){Boolean?requiresSupport=null;if(grdMainLevel1.GetFocused