问题标签 [disposable]

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 投票
2 回答
143 浏览

c# - 创建和终止集合中包含的线程

我有一个自定义集合(线程安全的 ObservableQueue)。我在集合类中实现了业务逻辑(即将项目逐一出列并将它们暴露给外部)。这工作正常。为了防止集合阻塞初始化它的线程, OnservableQueue 实现了一个线程来执行该工作。现在我不能完全确定可能发生的任何陷阱。

在构造函数中初始化(而不是开始!仅初始化)线程是一个坏主意吗?如果不是最好的,终止线程的最佳实践是什么?请注意,我不需要知道如何终止线程,它工作正常,我对天气很感兴趣,使用一次性模式或创建需要调用以终止线程的方法有问题。如果实施IDisposable,关于收集/队列有什么我必须考虑的事情吗?

编辑:线程实际上只是预先初始化,以防止NullReferenceException被抛出入队方法,在那里它再次被正确初始化(入队方法应该检查天气一个出队线程是否已经运行,如果不开始一个新的) . 请注意,每当所有项目都出队并且线程完成其工作时,它也将不再处于活动状态,因此每当队列为空并添加新项目时,都会启动一个新线程来处理队列:

if 语句确实需要一个初始化的线程。还有其他可能的方法来实现这一点,但预初始化线程似乎最不麻烦。您会看到,在检查天气后线程是活动的,在预初始化时它不应该这样做,它会再次正确初始化。

0 投票
2 回答
1185 浏览

c# - 在静态方法中管理一次性对象

上面的代码使用失败,因为它似乎没有正确关闭/处理流。随后的写入会给出“正在使用的文件”IOException。

如果将类修改为使用非静态方法,它似乎可以正常工作。

我不明白为什么会有任何行为差异?

0 投票
2 回答
2803 浏览

c# - userControl1.Dispose() 是否处理其所有一次性对象?

我已经制作了一个 userControl 库 .. 它包含 NetworkStream、StreamReader、FileStream
所以当有这个 userControl 的表单关闭时,我是否必须将它们全部处理掉?

Form1_FormClosing(object sender,FormClosingEventArgs e)我的意思是 userControl 中没有这样的东西,所以我应该什么时候处理这​​些流?
userControl1.Dispose() 会解决这个问题吗?

提前致谢 :)

0 投票
11 回答
54170 浏览

php - 如何在您网站的注册表单中阻止一次性电子邮件地址?

我想知道阻止一次性电子邮件地址在我的网站上注册的可能方法。

为简单起见,我们以网站的注册表单用 HTML 和 PHP 完成的例子为例。

任何想法、解决方案或建议将不胜感激。

0 投票
1 回答
633 浏览

session - Session 中的 ServiceContext 和 OrganizationServiceProxy

我有一个 ASP.Net 应用程序,它允许用户通过早期绑定实体与 Dynamics CRM 2011 数据进行交互。

我目前将 ServiceContext 和 OrganizationServiceProxy 存储在会话中,原因是我必须获取特定类型的对象,然后在用户需要时获取它们的相关实体。最后在用户点击保存时更新它们。

我知道 ServiceContext 和 OrganizationServiceProxy 实现了 IDisposable ,因此应该被处置。目前,我在 Global.asax 的会话结束时执行此操作。

我正在测试我的想法,但我是否应该在获得实体或完成整个过程时实例化并处理代理和上下文?

所有 MS 指南都显示将整个过程包装在 using 语句中,以便处理对象,但如果该过程需要用户交互怎么办?

0 投票
2 回答
523 浏览

.net - .NET - 为什么只允许在单元测试期间处理标准输出?

首先,我想指出我真的不想处理标准输出......我只想知道为什么我会看到所描述的行为。我没有写描述的错误代码。

我使用 .NET 4 进行单元测试,使用 .NET 3.5 进行测试的代码。我使用 MSTest for .NET 4 作为我的测试框架。

最近,我一直在使用一个由于处理标准错误输出的错误而引发错误的库。(请参阅LibTiff.NET ReadDirectory is given System.ObjectDisposedException Only during Unit Tests)。

这是他们的代码相对的样子:

基本上,在不运行单元测试时,即使专门处理标准输出也不处理,但在运行单元测试时,是允许的。

谁能解释为什么标准输出仅在单元测试的上下文中是一次性的?

0 投票
2 回答
1062 浏览

c# - 如何检查已处置的对象并在方法中抛出 ObjectDisposedException(如果已处置)

我有一个一次性类,它使用一次性模式实现 IDisposalbe 接口。为了保持这些约束,我需要确保当对象被释放后,对任何公共方法的任何后续调用都会引发 ObjectDisposedException。显而易见的解决方案是检查 bool 值 isDisposed 并抛出异常。但是我如何使用一些基于反射的解决方案(如果有的话或其他方法)自动将此约束应用于每个公共方法。我不想做的是在我拥有的每个方法中进行此检查(即在每次调用之前我不想调用 IsObjectDisposed() 方法)

除了我之前描述的实际应用之外,我还需要知道一种自动调用方法的方法,比如 Foo(),每次调用类的方法,比如 MyClass

0 投票
2 回答
2369 浏览

scala - 一次性资源模式

Scala 库中是否有任何标准化来支持一次性资源模式

我的意思是类似于 C# 和 .NET 支持的东西,仅举一个例子。

例如,官方 Scala 库是否提供如下内容:

注意:我知道这篇文章 « Scala finally block closing/flushing resource » 但它似乎没有集成在标准库中

0 投票
2 回答
1614 浏览

vb.net - Is there a way to find out if an object has been dispose() or not?

I have the following object that later in my code I want to dispose() IF it exists. Is there a way to find if it exists?

The best I could come up with is to put the disposal into a try...catch block like this:

Does anyone have a more elegant, less kludgy method?

0 投票
3 回答
907 浏览

c# - 使用 Ninject 处理或不处理可注入实例

我有以下代码块用于在我的解决方案中配置 Ninject:

我的观点是这里使用的一次性模式不是必需的..

IDependencyScope 是 IDisposable,但我应该只在构造 IDisposable 成员时清理它们,但构造函数中注入的解析器不属于我的类(创建),并且 IResolutionRoot 不派生自/实现 IDisposable...

我在这里吗?

(查看这篇关于 IDisposable 模式的文章以供参考)

(编辑): 这实际上是一个基类,由以下类使用,因此无法在此处删除 IDisposable 实现...