草庐IT

block_and_release

全部标签

c# - 迭代器 block 在 IL 中生成 try-fault

在尝试使用迭代器block后,我注意到生成的IL代码不是我期望的那样。生成try-faultblock而不是try-finallyblock,这是我从未见过的。我注意到编译器不允许我在“手写”C#中使用fault关键字。两者有区别吗?C#代码:staticIEnumerableReadAllLines(stringfileName){using(varfile=System.IO.File.OpenText(fileName)){strings;while((s=file.ReadLine())!=null){yieldreturns;}}}MSIL代码:.methodprivateh

c# - 如何从嵌套的 try-catch block 中重新抛出先前的异常? (C#)

我有尝试进行类型转换的代码。如果失败,我想尝试其他方法,如果同样失败,则重新抛出第一次转换尝试的原始异常。问题是我知道重新抛出的唯一方法是将“throw;”放在catchblock的末尾。当我只希望从另一个catchblock中重新抛出时会发生什么?try{valueFromData=Convert.ChangeType(valueFromData,pi.PropertyType);}catch(InvalidCastExceptione){Debug.WriteLine(String.Concat("Info-Directconversionfailed.Attemptingtoco

c# - .Net4 中的 GC : Specifying gcServer and gcConcurrent together

我正在调整我们的服务器性能,并尝试指定以下配置,并将GCLatencyMode设置为LowLatency。这提高了我的性能,直到一位同事指出这两个设置在.Net4中是互斥的,我才感到非常高兴。那么这将解析到什么配置?当然,GCSettings.IsServerGC返回true,将gcConcurrent设置为false会带来非常明显的性能提升。(我将我正在分析的代码编译成一个测试工具,所以虽然它通常是由IIS托管的服务器,但我的所有计时都在控制台应用程序上) 最佳答案 我在这里找到了你的答案:LatencyModesDefaultG

c# - 通过 using block 使用进程

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:WhathappensifIdon'tcloseaSystem.Diagnostics.ProcessinmyC#consoleapp?由于System.Diagnostics.Process继承自实现IDisposable的Component,我是否应该始终创建一个Process使用usingblock?例如,这个...:using(varprocess=newProcess()){process.StartInfo.FileName="someprocess.exe";process.Start();pr

c# - 三重 DES : Specified key is a known weak key for 'TripleDES' and cannot be used

我正在使用.NET3.0类System.Security.Cryptography.MACTripleDES类来生成MAC值。不幸的是,我正在使用使用“1111111111111111”(十六进制)作为单一长度DESkey的硬件设备。System.Security.Cryptography库会对key进行完整性检查,如果您尝试使用加密强度较弱的key,则会返回异常。例如:byte[]key=newbyte[24];for(inti=0;i抛出异常System.Security.Cryptography.CryptographicException:Specifiedkeyisaknow

c# - Using block 中的异步

我在C#中有以下异步函数:privateasyncTaskCallDatabaseAsync(Func>execAsync){using(varconnection=newSqlConnection(_connectionString)){connection.Open();returnawaitexecAsync(connection);}}它允许执行任何异步函数execAsync,该函数将SQL连接作为参数并使用它来进行数据库调用,方法是提供连接对象并确保其正确关闭。然后从WebApiController中的操作调用此函数,如下所示:publicasyncTaskMyAction(

c# - Debug 和 Release 模式之间的异常堆栈跟踪差异

下面的代码在调试和Release模式下生成不同的异常堆栈跟踪:staticclassET{publicstaticvoidE1(){thrownewException("E1");}publicstaticvoidE2(){try{E1();}catch(Exceptione){throw;}}publicstaticvoidEntry(){try{E2();}catch(Exceptione){Console.WriteLine(e.StackTrace);}}}Debug模式下的结果:atET.E1()inD:\myStudio\CSharp\CSharp4.0\MyCSharp\

c# - 等同于 C# 中 VB 的自定义 RaiseEvent block ?

(我知道标题听起来很简单,但等等——这可能不是您认为的问题。)在VB.NET中,我能够编写自定义事件。例如,我有一个单独的线程会定期引发一个事件,并且在该事件上需要更新GUI。我不想让繁忙的线程打扰UI计算,也不想将Me.Invoke(Sub()...)放在事件处理程序中,因为它也是从GUI线程调用的。我想出了这段非常有用的代码。GUI线程将设置EventSyncInvoke=Me(主窗体)。然后线程可以像往常一样简单地引发事件TestEvent,无需特殊代码,它将在GUI线程上无缝执行:PrivateTestEventDelegateAsEventHandlerPublicEvent

c# - MVC 4 : How to maintain sessions and cookies to be still valid after IIS restart?

似乎我的登录session(使用简单成员资格)和cookie(验证token)在IIS服务器重新启动后无效。这对我来说是个问题,如果用户在交易中间然后服务器重新启动,用户必须重新填写表格并重新填写,当交易在中间中断时也可能是一些代码问题过程。如何让它们在服务器重启后仍然有效?这是我的web.config:.........更新我尝试使用SQLServer来存储session状态。然后出现新问题,我不能使用ViewBag,因为它不是Serializable。还有其他方法可以实现吗? 最佳答案 没有办法实现这个AFAIK。您始终可以使用

c# - WPF:使路径的整个 "block"可点击

我的一些Button有一个特殊的ControlTemplate。这很好用,但由于我使用的是Path(在本例中,它的形状就像一个胖X),确切的路径是可点击的,而不是X角之间的小空间。是否有任何自动魔法可以使X的整个“block”可点击?我考虑过将路径包裹在一个矩形对象中,但我只是想确保我没有遗漏一些微不足道的东西。 最佳答案 AviadP.是正确的。这就是我所做的:这是有效的,因为当“HitTest”以确定鼠标点击的路径时,“透明”画笔被认为是一种常规颜色。 关于c#-WPF:使路径的整个