问题标签 [autoresetevent]

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 投票
11 回答
188259 浏览

c# - .NET 中的 ManualResetEvent 和 AutoResetEvent 有什么区别?

我已经阅读了这方面的文档,我想我明白了。AutoResetEvent当代码通过时,An会重置event.WaitOne(),但 aManualResetEvent不会。

它是否正确?

0 投票
1 回答
995 浏览

c# - 使用 AutoResetEvent 的调用异常

C# 2005

我正在使用后台工作人员来处理一些登录信息。但是,后台工作人员必须停止并等待 2 个事件发生。一旦这些完成,后台工作人员就可以完成它的工作。它们是调用 AutoResetEvent 的 Set() 方法的回调。

所以我使用 AutoResetEvent 来设置这两个事件何时完成。但是,我似乎收到了这条错误消息:“调用的目标已抛出异常。”

并且内部异常索引超出范围。必须是非负数且小于集合的大小。参数名称:索引”。

当注册成功离开范围时,通常会触发异常。

非常感谢您的任何建议

后台工作人员的代码。

0 投票
6 回答
9660 浏览

java - Java 相当于 .Net 的 AutoResetEvent?

我应该使用什么来获得与Java中的AutoResetEvent等效的语义?(有关 ManualResetEvent,请参阅此问题)。

0 投票
3 回答
10090 浏览

c# - AutoResetEvent 的 C# 线程问题

如何正确同步这个?目前有可能在完成SetData后调用,e.WaitOne()因此d可能已经设置为另一个值。我试图插入锁,但它导致了死锁。

最好的解决方案是引入一个新的布尔变量dataAlreadyBeenSetAndWaitingToBeProcessed,该变量设置SetData为 true,最后DoLongOperationWith_d可以设置为 true,所以如果SetData在此变量设置为 true 的情况下调用它可以返回?

0 投票
3 回答
679 浏览

c# - 我的 AutoResetEvent 代码有什么问题?

我有这段代码,看起来很简单,但 AutoResetEvent 永远不会收到信号。Web 服务似乎没有返回任何内容,并且 WaitAll 仅在 10 秒后超时。没有线程 jiggerypokery 一切正常,所以它不是 Web 服务问题。我究竟做错了什么?

0 投票
1 回答
979 浏览

.net - AutoResetEvent.WaitOne() 是否释放线程池中的插槽?

我正在尝试同步一个异步方法。异步版本的主要优点是它释放了线程池中的一个槽。我想在我的同步版本中保留这个优势。当我使用 AutoResetEvent.WaitOne() 时,它在线程池使用方面相当于 Thread.Sleep() 吗?

0 投票
1 回答
187 浏览

.net - AutoResetEvent 对象,等待 60 秒或事件

我使用 AutoResetEvent 对象阻止线程 60 秒,但我想阻止它 60 秒或 AutoResetEvent.set() 事件

代码 :

但它总是等待整个 60 秒!即使我释放了信号。

0 投票
4 回答
6719 浏览

c# - C#中的队列和等待句柄

多年来,我的应用程序中一直有以下代码,但从未遇到过问题。

其中 CommandEventArr 由 NewOrderEvent(自动重置事件)和 ExitEvent(手动重置事件)组成。

但是我不确定这是否是线程安全的(假设 N 个生产者线程在入队之前都锁定了队列,一个消费者线程运行上面的代码)。此外,我们可以假设 Queue.Count 属性仅从 Queue 类返回一个实例 Int32 值(没有 volatile 或 interlocked 或锁等)。

与 Queue 和 AutoResetEvent 一起使用来解决此问题并使用上面的代码执行我尝试执行的操作的常用模式是什么?

(在正确指出 Queue.Count 可以做任何事情并且它的具体实现之后,稍微改变了这个问题)。

0 投票
4 回答
6215 浏览

c# - C# 中 Manual/AutoResetEvent 的轻量级替代方案

我已经编写了我希望是在 C#/.NET 中使用 ManualResetEvent 和 AutoResetEvent 类的轻量级替代方案。这背后的原因是具有类似事件的功能,而无需使用内核锁定对象。

尽管代码似乎在测试和生产中都运行良好,但为所有可能性正确处理这种事情可能是一项艰巨的任务,我会谦虚地请求 StackOverflow 人群对此提出任何建设性意见和或批评。希望(经过审查)这对其他人有用。

用法应该类似于用于 Set() 的具有 Notify() 的 Manual/AutoResetEvent 类。

开始:

0 投票
4 回答
2083 浏览

visual-studio-2010 - 单元测试在调试中通过,但在运行时挂起

我有一个奇怪的问题。我有一个单元测试一直卡在运行模式。当我在 Debug 中运行相同的测试时,没有断点,测试每次都通过。

基本上,它是一个套接字连接测试。我首先断开一个套接字,然后尝试重新连接,并尝试检查重新连接是否成功。

在连接代码的某处,我检查是否有套接字异常。发生这种情况时,用户会在对话框中看到一些选择,而连接代码通过 AutoResetEvent 挂起,等待决定。

正是这个 AutoResetEvent 挂起系统。它必须由单元测试中的代码提供。但我的问题是,这怎么会在调试模式下通过?Visual Studio 自动设置 AutoResetEvents 的调试模式有什么特别之处吗?

编辑

这确实是一个竞赛条件。我在断开代码之后在代码中添加了延迟,现在它可以工作了。但让我感到奇怪的是,一开始就有一个比赛条件。让我通过粘贴一些代码来详细说明。

这是测试代码:

这让我印象深刻的原因是,在调用连接代码之前,我正在等待断开连接代码的返回。断开连接代码的最后一部分如下所示:

是因为 Socket.Shutdown() 和/或 Socket.Close() 方法运行它的线程吗?因此,即使我从断开代码中返回一个值,套接字实际上并没有真正断开?