C# using 语句如何转换为 Try-Finally

2023-12-22

我正在努力解决这个问题。根据这一页 https://msdn.microsoft.com/en-us/library/yh598w02.aspx on Using声明:

using 语句可确保即使在调用对象方法时发生异常,也会调用 Dispose。您可以通过将对象放入 try 块中,然后在 finally 块中调用 Dispose 来实现相同的结果;事实上,这就是编译器翻译 using 语句的方式。

But on 这一页 https://msdn.microsoft.com/en-us/library/zwc8s4fz.aspx about Try-Finally阻止它指出:

在已处理的异常中,保证运行关联的finally 块。但是,如果异常未处理,则finally块的执行取决于异常展开操作的触发方式。

那么如何才能Using如果语句转换为异常,则保证在发生异常时调用 Dispose 方法Try-Finally那不保证调用finally语句吗?


它的行为确实像 try/finally - 所以如果应用程序终止,资源可能不会被处置......这通常是好的,因为通常处置是为了释放进程持有的资源......并且操作系统会整理这些资源无论如何,进程死亡。 (这并不是说Dispose method won't被称为……和正常的一样try/finally.)

显然,如果你的文件系统上有一个“锁定文件”或类似的东西,那将是一个问题 - 但在断电等情况下你也会遇到同样的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# using 语句如何转换为 Try-Finally 的相关文章

  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 更改JIT编译的最终值

    我注意到一件非常奇怪的事情 在通过反射更改最终字段后 返回该字段的方法始终给出旧值 我想这可能是因为 JIT 编译器 这是示例程序 public class Main private static final Main m new Main
  • 无法以编程方式启动 Windows Azure VM

    我正在执行 REST API 操作开始角色 http msdn microsoft com en us library jj157189 aspx 在链接中https management core windows net subscrip
  • RedHat 上的 Scipy 和 Scikit-learn 中未定义的符号

    我正在尝试在没有 root 权限的 64 位 Red Hat Enterprise 6 6 服务器上安装 Scikit Learn 我已经全新安装了 Python 2 7 9 Numpy 1 9 2 Scipy 0 15 1 和 Sciki
  • 使用 jQuery 更改模态内容

    我正在使用 twitter bootstrap 的模式来制作弹出表单 下面的代码显示了模式形式 第一情态形式 div class modal fade div class modal dialog modal dialog1 div cla
  • 如果不通过 createElementNS 处理,为什么动态 SVG 无法工作

    我试图在纯 JS 中操作 SVG 发现如果我不使用类似的方法 它就不会按预期运行createElementNS and setAttributeNS
  • 使用 Anaconda 或 Canopy 安装 Python 模块

    我玩过一点 Python 但从来不需要安装自己的包 我目前正在尝试编写一个读取 tiff 文件的程序 因此我尝试安装 libtiff 包 但我做了一场噩梦 首先 我使用的是 Anaconda 发行版和短语 conda install lib
  • 在 django 模板中输出排序的 python 字典

    我得到了一个 python 字典 如下所示 由于隐私原因 重要信息被替换为 xxx 我想在 django 模板中显示这个字典 但它应该是有序的 所以它应该以 A 开头 然后继续以 B 而不是 H 这是我的字典 缩短 A birthday d
  • 无法在 Mac 上找到 matplotlib 的字体缓存

    我对此进行了很多研究 但无法使其发挥作用 如何更改 matplotlib 的字体 根据我的研究 我认为我的问题是字体缓存 我在正确的文件夹中有 ttf 人们一直说 rm matplotlib fontList cache 是要使用的命令 但
  • 通过预定义索引分割Python字符串[重复]

    这个问题在这里已经有答案了 我有一个字符串 我想将其在特定位置拆分为字符串列表 分割点存储在单独的分割列表中 例如 test string thequickbrownfoxjumpsoverthelazydog split points 0
  • 在 JTable 中使用空列作为分隔符

    我正在尝试使用空列作为中的两列之间的分隔线JTable 这是我到目前为止所拥有的图片和代码 我知道我可以使用自定义更改外观TableCellRenderer 在我走这条路之前 有更好的方法吗 任何想法表示赞赏 import javax sw
  • 为什么我的 iPhone 上没有收到任何通知?

    在 Xcode8 3 上使用 swift 3 1 运行它 下面是我在 AppDelegate swift 中的代码 func application application UIApplication didFinishLaunchingW
  • 重写 BuildRenderTree 时是否可以获取 RenderFragments 列表?

    我想知道是否可以引用子元素ChildContent组件的参数 我可以显式地或通过使用级联参数将值从父组件传递给子组件 但是父组件没有很好的方法来 了解 父组件内部的元素ChildContent RenderFragment 一个可能的用例是
  • Smarty PHP 与 AngularJS 发生冲突

    当我在同一模板中使用 AngularJS 时 如何阻止 Smarty 抛出错误 我有一个带有以下代码的 Smarty 页面模板 li p class item i p li 当我在浏览器中查看时 我得到一个空白页面 我的 apache er
  • 将 varchar 值“simple,”转换为数据类型 int 时转换失败

    我为这个问题苦苦挣扎了几天 但我不知道如何解决它 我想group by我的价值观表1 2 3 4 5所以我创建了一个临时表与这个价值观 现在我必须INNER JOIN这张桌子和其他桌子上a value myTempTable num BUT
  • 是否可以像使用 AVRO 的 Kafka 那样为 Google Pub/Sub 主题定义模式?

    据我所知 我们可以在Kafka上定义AVRO模式 并且使用该模式定义的主题将只接受与该模式匹配的数据 在接受队列之前验证数据结构非常有用 Google Pub Sub 中有类似的东西吗 Kafka 本身并不验证模式 因此主题除了一对字节数组
  • 如何使用 setInterval() 返回 Promise

    我试图每 1000 毫秒返回一个 Promise 对象 但我不确定如何访问 Promise 中返回的数据setInterval 打回来 EDIT我似乎不太清楚我的意图 所以我会尝试解释我正在尝试做什么 我进行倒计时 根据指定的结束日期每 1
  • 每个div的Html2canvas分别导出为pdf

    我有页面 它有 6 个具有相同类名 exportpdf 的 div 我使用这些 div 将这些 div 转换为 pdfjspdf and html2canvas var elementTobePrinted angular element
  • COBOL 的 Scons

    我想在 scons 中创建一个与 COBOL 一起使用的构建器 这是一个开始 import re Import env Source src cpy COPYBK1 cpy src cpy COPYBK2 cpy src cpy COPYB
  • Android Camera.takePicture 失败

    作为一个学习练习 我正在编写一个安全应用程序 当任意事件发生时 需要打开相机 拍照 然后关闭相机 而不必担心闪光灯 对焦或显示预览 我按照在线演示制作了一个可以拍照的应用程序 但它使用预览等等 所以我开始努力让它在没有预览的情况下工作 不管
  • C# using 语句如何转换为 Try-Finally

    我正在努力解决这个问题 根据这一页 https msdn microsoft com en us library yh598w02 aspx on Using声明 using 语句可确保即使在调用对象方法时发生异常 也会调用 Dispose