jjzjj

idisposable

全部标签

c# - 为什么 HttpWebResponse 上没有 Dispose 方法

HttpWebReponse实现了IDisposable接口(interface),但是为什么没有Dispose方法。它只包含Close方法。using模式是否仍可用于此类? 最佳答案 HttpWebResponseimplementsIDisposable接口(interface)显式。因此,只有当您将HttpWebResponse转换为IDisposable时,您才能调用Dispose。HttpWebResponse的Close方法在内部调用Dispose。HttpWebResponseresponse=//assignedfr

c# - 访问已处置的闭包 - 将方法标记为安全

这是关于ReSharper的警告“Accesstodisposedclosure”,通常出现在lambda中使用稍后处置的对象时。AccesstodisposedclosureinC#?对此进行了更详细的讨论。我的问题是:对于采用此类lamdb并立即执行它们的方法(因此您可以确保它们始终在处理所述对象之前执行):有没有办法将它们标记为安全的,以便使用该方法的任何代码都不会再产生这些警告?例子:using(varmyObject=newMyDisposableObject()){DoThisTwice(()=>myObject.DoSomething());}...voidDoThisT

c# - 代码分析警告 CA2213 - 在 IDisposable 支持字段上调用 ​​Dispose()

想发布这个,即使我在写问题时想通了。将在下面发布答案。使用VS代码分析获取以下警告:WarningCA2213'DBConn'containsfield'DBConn.k__BackingField'thatisofIDisposabletype:'SqlConnection'.ChangetheDisposemethodon'DBConn'tocallDisposeorCloseonthisfield.但是我的代码确实在DBConn属性上调用了Dispose()。它不在后台吗?我还有其他类似的实例-我正在处理编译器不会抛出此警告的地方。这是下面的代码:usingSystem;usin

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

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

c# - 为什么我没有看到 IDisposable 实现并发的任何实现?

当我查看IDisposable的示例实现时,我没有发现任何线程安全的。为什么IDisposable没有实现线程安全?(相反,调用者有责任确保只有一个线程调用Dispose())。 最佳答案 在使用完对象之前,您不应该丢弃它。如果有其他线程引用该对象并且它们有可能想要调用它的方法,则您不应该处置它。因此Dispose不需要是线程安全的。 关于c#-为什么我没有看到IDisposable实现并发的任何实现?,我们在StackOverflow上找到一个类似的问题:

c# - 如何在 Visual Studio IDE 中使所有 IDisposable 类的颜色不同?

标题涵盖了一切。我希望实现IDisposable的类以特定颜色显示,这样我就可以知道是否应该将它们包装在usingblock中。是否有可以扩展IDE的设置或过程? 最佳答案 我认为一旦Roslyn出来,这将变得更容易/无需扩展,但目前这并不容易,因为您无法从扩展轻松访问代码作为C#。在Resharper中,这很简单!我的示例在ReSharper9.0中进行了测试。遗憾的是,没有简单的方法可以将此提供给您。扩展->Resharper->选项->代码检查->自定义模式->添加,弹出对话框选择C#(左上角)选择“查找”(右上角)添加new

c# - 使用完 .NET 服务引用客户端后是否需要关闭它

我正在尝试了解在您使用完.net服务引用客户端后是否有必要关闭它。我在网上遇到的几乎所有示例似乎都没有,但是生成的客户端实现了IDisposable并且因为它确实打开了到服务的连接,我的直觉告诉我你需要关闭该连接当你完成了。这是我从http://msdn.microsoft.com/en-us/library/bb386386(v=VS.90).aspx中提取的代码示例:privatevoidbutton1_Click(System.Objectsender,System.EventArgse){ServiceReference1.Service1Clientclient=newSer

c# - 是否有为 using 语句实现 IDisposable 的公共(public)对象列表?

我想知道是否有某种备忘单可以让对象与using语句配合得很好...SQLConnection、MemoryStream等更进一步,如果能展示其他“拼图碎片”就更好了,比如您应该如何在using语句括号结束之前实际调用connection.Close()。有这样的东西吗?如果没有,也许我们应该做一个。 最佳答案 也许可以浏览一下我在http://www.lancemay.com/2010/01/idisposable-cheat-sheet/上的帖子.不确定这是否是您要查找的内容,但根据最初的问题,听起来可能是。

c# - 内联创建和使用一次性对象是否安全?

我已经多次看到开发人员使用内联一次性对象,here例如。内联我的意思是:varresult=newDataTable().Compute("1+4*7",null);我知道Dispose方法不会被调用,但由于没有引用对象,垃圾收集器将如何处理它?使用这样的一次性元素安全吗?我在示例中使用了DataTable,因为它是我找到的唯一具体示例,但我的问题通常适用于一次性对象。我个人并没有那样使用它们,我只是想知道如果以这种方式使用它们,GC是否会对其进行不同的处理。 最佳答案 这里的关键问题是调用Dispose的时间,这在您的示例中是未知

c# - 当类具有 IDisposable 成员但没有非托管资源时,我应该实现 IDisposable 吗?

MSDN文档和StackOverflow上的许多答案竭尽全力讨论如何正确实现IDisposable,例如MSDNIDisposable,MSDNImplementingIDisposable,AnexcellentStackOverflowQ&A然而,它们似乎都没有涵盖我所拥有的一个更常见的用例:当我的类有一个比一种方法生命周期更长的IDisposable成员时该怎么办?例如classFantasticFileService{privateFileSystemWatcherfileWatch;//FileSystemWatcherisIDisposablepublicFantastic