问题标签 [dispose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4418 浏览

c# - 处理套接字/完成两次的问题?

我正在为一个打开套接字,发出请求并监听响应的类使用一些代码(不是我的,我急于添加,我一点也不信任),它以我可以的方式抛出异常在 xunit 中测试时不理解。我假设同样的异常发生在“现场”,但是该类被一个单例引用,所以它可能只是被隐藏了。

问题在 xunit 中表现为“System.CannotUnloadAppDomainException: Error while unloading appdomain”,内部异常是在关闭套接字时(基本上)在终结器内抛出“System.ObjectDisposedException”!没有其他对调用 close 和 dispose 的套接字的引用在 Socket 类上受到保护,所以我不清楚如何处理该对象。

此外,如果我只是捕获并吸收 ObjectDisposedException,xunit 会在它到达关闭侦听器线程的行时终止。

我只是不明白在要求关闭之前如何处理 Socket。

我对套接字的了解只是我发现这个问题后学到的知识,所以我不知道我是否提供了 SO 可能需要的一切。LMK 如果没有!

0 投票
5 回答
15815 浏览

c# - 我是否需要在 ASP.NET 中处理 Web 服务引用?

垃圾收集器是否清理 Web 服务引用,或者在我调用完我调用的任何方法后,我是否需要在服务引用上调用 dispose?

0 投票
3 回答
1546 浏览

c# - 在 Dispose(bool) 方法实现中,不应该将成员设置为空吗?

讨论模式的指南/注释/文章都没有IDisposable建议应该nullDispose(bool)方法中设置内部成员(特别是如果它们是占用内存的野兽)。

在调试内部基准测试工具时,我开始意识到它的重要性。过去发生的事情是,这个缓冲区里面包含一个大数组。我们曾经为整个基准测试程序使用静态缓冲区。一旦我们完成了缓冲区,我们就无法释放这个内部数组,我们也不能让这个缓冲区可释放(因为它是静态的)。

所以,我相信,在Dispose()被调用之后,该类应该尽其所能释放它正在使用的所有资源并使它们再次可用,即使被处理的对象本身没有被 GC 回收,也没有设置成员为 null,因此,不允许 GC 收集内部对象意味着 Dispose 实现并不完美。

您对此有何看法?

0 投票
3 回答
3563 浏览

c# - 处理静电刷

我正在编写一个生物节律应用程序。为了测试它,我有一个带有按钮和图片框的表单。当我点击按钮时

第一次运行正常,但在第二次单击时会导致以下异常:

导致错误的缩减函数是:

如果我注释掉刷子处理它可以正常工作,但我对此不满意并希望找到替代解决方案。你能帮我吗 ?

0 投票
7 回答
43984 浏览

c# - 如果您在应用程序中使用 System.Timers.Timer,是否有必要处理它?

我在我的应用程序的一个类中使用 System.Timers.Timer 类。我知道 Timer 类具有从实现 IDisposable 接口的父 Component 类继承的 Dispose 方法。下面的类的实例在我的应用程序生命周期中被创建了很多次;它们中的每一个都有一个 Timer 类的实例,该实例在类的生命周期中不断地生成 Elapsed 事件。我应该在使用 Timer 类来处理计时器对象的类中实现 IDisposable 接口吗?(我见过根本不这样做的代码)。如果我像这样使用下面的类,我担心一些非托管资源不会被释放:

班上:

0 投票
7 回答
109399 浏览

c# - 处理 WPF 用户控件

我创建了一个供第三方使用的自定义 WPF 用户控件。我的控件有一个一次性的私有成员,我想确保一旦包含的窗口/应用程序关闭,它的 dispose 方法将始终被调用。但是,UserControl 不是一次性的。

我尝试实现 IDisposable 接口并订阅 Unloaded 事件,但在主机应用程序关闭时都没有被调用。MSDN 说可能根本不会引发 Unloaded 事件。它也可能被触发不止一次,即当用户更改主题时。

如果可能的话,我不想依赖我控制的消费者记住调用特定的 Dispose 方法。

到目前为止,我发现的唯一解决方案是订阅 Dispatcher 的 ShutdownStarted 事件。这是一个合理的方法吗?

0 投票
8 回答
35193 浏览

c# - 在 .NET 中重写 Dispose(bool disposing) 有什么意义?

如果我在 C# 中编写一个实现 IDisposable 的类,为什么不足以让我简单地实现

处理释放任何非托管资源?

总是必要的,有时是必要的,还是完全不同的东西?

0 投票
4 回答
4050 浏览

c# - 识别 IDisposable 对象

我必须查看其他人编写的代码,该代码有一些内存泄漏。现在我正在搜索一次性对象以使用 using 语句将它们包含在内,我想知道是否有一种快速方法可以告诉您声明的所有一次性对象。我的意思是像 resharper 或其他 Visual Studio 插件。

谢谢。

0 投票
6 回答
9270 浏览

c# - IDisposable 有什么用途?

如果 .NET 有垃圾收集,那么为什么必须显式调用IDisposable

0 投票
3 回答
6303 浏览

c# - 如何保证 NotifyIcon 消失?

我在我的一个子(模态)表单中使用 NotifyIcon 控件,它工作正常。按预期显示气球提示,处理鼠标事件等......但是,当我期望它消失时,它并没有消失。具体来说,当我退出子表单并且父表单重新控制时,图标仍然存在。它的工具提示是可访问的,因此它非常“活跃”。

然后当我退出整个应用程序时,图像仍然存在,直到我将光标悬停在它上面。一旦鼠标它消失。

我怎样才能让它正常运行?好的通常是一个坏词:-0 当创建它的表单消失时,我怎样才能让它消失?

有人能解释一下是什么原因造成的吗,我认为 .net 应该自行清理?

G

编辑:如果我以关闭的形式调用 Dispose 方法,这是可行的,但我真的必须这样做吗?G