草庐IT

Block_release

全部标签

c# - finally block when 后编译器生成无限循环

我使用的是针对.Net4.6.2的标准VS2015编译器。编译器在finallyblock失败后发出无限循环。一些例子:调试:IL_0000:nop.try{IL_0001:nopIL_0002:nopIL_0003:leave.sIL_000c}//end.tryfinally{IL_0005:nopIL_0006:br.sIL_000a//loopstart(head:IL_000a)IL_0008:nopIL_0009:nopIL_000a:br.sIL_0008//endloop}//endhandler//loopstart(head:IL_000c)IL_000c:br.s

c# - 如果没有通过 using block 实例化实现 IDisposable 的类是否有方法抛出异常?

我发现了一些有潜在危险的类,如果它们不能被实例化,那么它们的危险性会小得多,除非它们在using语句中被实例化。我想知道是否有办法强制类只以这种方式实例化。(我知道IL会编译出什么,这就是为什么我不太确定这是否可能)干杯,菲尔。 最佳答案 没有办法强制执行它,但您可以构建一个customCodeAnalysisrule标记它。 关于c#-如果没有通过usingblock实例化实现IDisposable的类是否有方法抛出异常?,我们在StackOverflow上找到一个类似的问题:

c# - 即使在 using block 中抛出异常,资源也会被释放吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:DoesDisposemethodstillgetcalledwhenExceptionisthrowninsideofUsingstatment?访问数据库时,我有很多usingblock。我想知道-如果必须在usingblock中抛出异常,即使未到达block的末尾,是否仍会处理必要的资源?或者我需要自己在catchblock中手动关闭它们吗?

c# - 您能否在每个 block 中捕获不止一种类型的异常?

这个问题在这里已经有了答案:Catchmultipleexceptionsatonce?(29个答案)关闭9年前。ThisquestionisclosetowhatIwanttodo,但不完全是。有没有办法简化下面的代码?privateboolValidDirectory(stringdirectory){if(!Directory.Exists(directory)){if(MessageBox.Show(directory+"doesnotexist.Doyouwishtocreateit?",this.Text)==DialogResult.OK){try{Directory.C

c# - 在 C# 中,我如何安全地退出带有 try catch block 的锁?

这是一个在锁内发生异常的示例,带有try-catchblock。intzero=0;intj=10;lock(sharedResource.SyncRoot){try{j=j/zero;}catch(DivideByZeroExceptione){//exceptioncaughtbutlocknotreleased}}我如何安全地释放锁扣? 最佳答案 不会自动释放吗?来自MSDN的锁手段System.Threading.Monitor.Enter(x);try{...}finally{System.Threading.Monito

c# - 如何优化 C# 中数组的复制 block ?

我正在编写一个实时视频成像应用程序,需要加快此方法的速度。目前执行大约需要10毫秒,我希望将其缩短至2-3毫秒。我已经尝试了Array.Copy和Buffer.BlockCopy,它们都需要大约30毫秒,比手动复制长3倍。一种想法是以某种方式将4个字节复制为一个整数,然后将它们作为一个整数粘贴,从而将4行代码减少为一行代码。但是,我不确定该怎么做。另一个想法是以某种方式使用指针和不安全代码来做到这一点,但我也不确定该怎么做。非常感谢所有帮助。谢谢!编辑:数组大小为:inputBuffer[327680]、lookupTable[16384]、outputBuffer[1310720]p

c# - 迭代器 block 和继承

给定一个具有以下接口(interface)的基类:publicclassBase{publicvirtualIEnumerableGetListOfStuff(){yieldreturn"First";yieldreturn"Second";yieldreturn"Third";}}我想创建一个重写方法的派生类,并添加自己的东西,如下所示:publicclassDerived:Base{publicoverrideIEnumerableGetListOfStuff(){foreach(stringsinbase.GetListOfStuff()){yieldreturns;}yield

c# - 跳过数据流转换 block 中的项目

TPLDataflow提供用于转换输入的TransformBlock,例如:vartb=newTransformBlock(i=>i*2);是否可以不输出某些输入,例如如果输入未通过某些验证测试?vartb=newTransformBlock(i=>{if(!ValidateInput(i)){//Dosomethingtonotoutputanythingforthisinput}//Normaloutput}如果这不可能,实现该目标的最佳模式是什么?像下面这样的东西?BufferBlockoutput=newBufferBlock();varab=newActionBlock(i=

c# - 在 try catch block 中抛出异常

try{if(isFileDownloaded)//dostuffelsethrownewCustomException()}catch(Exceptione){//somethingwentwrongtosavetheerrortolog}finally{//releaseresources}我的问题是catch会捕获tryblock中抛出的ApplicationException吗?是编码风格不好吗?是不是应该换一种写法? 最佳答案 catch将捕获您的异常(以及任何其他发生的异常)。话虽如此,我尽量避免编写这样的代码。就我个人

c# - Visual Studio Express 2012 未在 Release 文件夹中构建 exe

我已经编译了一个简单的“HelloWorld”程序。程序编译成功,没有任何错误。我可以在bin文件夹中看到一个工作的可执行文件。但是项目的Release文件夹是空的。不知道是不是设置的问题,或者是构建的问题。显然,我没有看到任何错误。 最佳答案 您可以在VisualStudio顶部更改构建模式:根据您构建解决方案的模式,VisualStudio将在bin\Debug文件夹或bin\Release文件夹中生成.exe。 关于c#-VisualStudioExpress2012未在Relea