问题标签 [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 投票
1 回答
354 浏览

c# - 将 AutoResetEvent 对象包装在受限制的 WaitHandle 中?

我已经建立了一个库,它启动一个线程来做这件事并将一个 WaitHandle 返回给调用者。

查看错误报告,我怀疑调用我的库的代码正在获取返回的对象并将其转换为 AutoResetEvent (它是)并提升标志本身。它不是为了这样做。

有没有一种方法可以将 AutoResetEvent 对象包装为仍然可以是 WaitOne'd 和 WaitAny'd 但只能由我的代码引发的对象?

谢谢。

0 投票
1 回答
932 浏览

.net - .NET AutoResetEvent:如何知道进程是否正在等待(方法 WaitOne)?

我调用我的流程方法“WaitOne”,如果流程正在等待,我需要知道另一种方法。

¿ 我可以知道我的 WaitHandle 吗?

宣言:

称呼:

编辑

该过程,通过一个事件,一个数据请求,并等待它被发送,当它接收到数据时继续执行方法“ WaitHandle.set()”。

但是用户也可以请求取消进程,在那个请求中我需要知道进程是否正在等待。

0 投票
2 回答
1996 浏览

c# - 由于 AutoResetEvent 信号处于 WaitOne 状态,线程在应用程序终止后仍然存在

我有一个应用程序在队列中使用 AutoResetEvent (WaitOne/Set) 来处理消息。我注意到当我从 Visual Studio (Shift+F5) 终止调试会话时,应用程序的原始进程会挂起(但并非总是如此)。我手动将调试器重新附加到进程,并看到它有单个线程卡在 WaitHandle.WaitOne 上。

所以我的问题是,终止可能处于 WaitOne 状态的线程的正确方法是什么?

想到的第一个答案是听应用程序退出事件并在那里进行设置,但我不确定在这些调试会话之后是否可靠地调用了此事件,或者是否有我不知道的更标准的做法的。

而且,作为第二个问题,对于在“生产”模式下运行的应用程序,您会以不同的方式处理这个问题吗?

0 投票
2 回答
2165 浏览

c# - C# 主线程被第二个线程阻塞使用信号?

GetFiles创建调用的第二个线程CopyFiles,我只是试图在每次复制文件时用文件名填充列表框,但是一旦代码命中行:

主线程被阻塞,有什么想法吗?

0 投票
2 回答
1130 浏览

c# - AutoResetEvent 过程?

我是否必须将事件设置为 false 一旦我拥有它 Dequeue 或事件在它回击时自行返回 false_queueNotifier.WaitOne()或它是如何工作的?

我应该像下面的示例那样使用内部 while 还是两种方式都很好/相等?

0 投票
0 回答
165 浏览

multithreading - 在 WaitOne 超时之前,计时器事件不会触发

我有一个定期触发以检查新数据的计时器。有时,我需要计时器立即触发,并且我需要等待计时器处理程序完成它的工作,然后再继续。我尝试让处理程序设置一个 AutoResetEvent,然后我的主线程将等待,但这不起作用。直到我对 WaitOne 的调用超时后,计时器才会触发。我尝试使用 System.Timers.Timer 和 System.Threading.Timer 获得相同的结果。关于我做错了什么的任何想法?

0 投票
3 回答
850 浏览

c# - 更新 ObservableCollection异步导致挂起,并且没有 GUI 更新

我正在 WPF 中实现 Tracert 的可视化版本(作为学习练习),其中结果进入列表框。问题是 (1) 绑定到 tracertDataView 的列表框没有更新,但是 (2) 我的整个应用程序挂起。

我确定#2 是线程问题,但我不确定如何纠正它(以正确的方式)。此外,我不确定我更新/绑定“DoTrace”结果的技术是否正确。

这是我在App.xaml中的数据源

应用程序.xaml.cs

这是主窗口代码

仅供参考 实例对象“traceWrapper.DoTrace”的内部实现细节

0 投票
1 回答
386 浏览

c# - Windows Phone 7.1:AutoResetEvent 不适用于服务方法?

将服务引用添加到我的电话应用程序(例如http://www.deeptraining.com/webservices/weather.asmx?op=GetWeather)后,我尝试使用 AutoResetEvent 进行仿真同步方法调用。但是在调用 WaitOne 之后,永远不会调用方法 Set。为什么?它是一个错误吗?

0 投票
2 回答
495 浏览

c# - 如何在采取任何其他操作之前等待 Autoreset 事件发生?

这是关于AutoResetEventC# 中的。我试图阅读其他答案,但我无法理解并适用于我的场景。我没有写任何线程应用程序。只是一个小应用程序来读取/验证文件和更新。所以我有这个要求写一些代码来读取一个固定长度的文件,验证它,然后如果它是有效的,将它上传到数据库。

我得到了一切工作,直到我被困在AutoResetEvent. 这就是正在发生的事情。解析/读取数据后,我使用 C# 中的平面文件检查器实用程序对其进行验证。所以我将这些函数调用到我的应用程序中。这是片段。

这部分进入初始化代码:

这是在验证过程中被异步调用的方法:

发生的情况是,即使在我将任何值设置到ValidationComplete代码中之前,也会检查验证是否完成,并且因为它默认设置为 false,所以它返回 false。之后执行代码中的代码FileSetValidated,因此数据库更新永远不会发生。

原因是我无法更改代码,因为平面文件检查器只接受一个AutoResetEvent作为 RunChecks 方法中的返回变量。

** * ***这是我现在所做的* ** * ** * private AutoResetEvent do_checks;

此外,我将传递有关验证的数据的部分移到事件处理程序的开头,以便至少执行该部分。这有帮助,但我不确定它是否正确。

0 投票
4 回答
6125 浏览

c# - 来自新线程的 Dispatcher.Invoke 正在锁定我的 UI

我正在使用 wpf,我的用户界面上有一个按钮。

当用户单击它时,我有一个 for 循环,它在使用 autoresetevent 的新线程上运行一个新方法。

在那个新线程的那个方法中,我使用了一个标签,我们称之为 lblStatus。我想更新该线程上不在 ui 上的标签。使用 wpf,我必须使用 Dispatcher.Invoke。

这是我的代码示例:

程序就停在这里。它不会更改标签的内容,它会返回到我的 ui,但会阻止它。
我试过了

也一样,但这也不起作用。有任何想法吗?