问题标签 [event-wait-handle]

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 回答
2120 浏览

performance - 如何检测 EventWaitHandle 是否在等待?

我有一个相当不错的多线程 winforms 应用程序,它在许多地方使用 EventWaitHandle 来同步访问。

所以我有类似这样的代码:

然后我只是从 UI 调用somewehre,它会在完成执行 .RevTypes后将数据返回给我。LoadStuff

所有这些都可以正常工作,但RevTypes只是一个属性 - 实际上有几十个。这些属性中的一个或几个正在阻止 UI 快速加载。

没有将基准代码放入每个属性中,有没有办法查看哪个属性正在阻止 UI 加载?有没有办法查看 EventWaitHandle 是否被迫实际等待?

0 投票
1 回答
4645 浏览

c# - 我应该如何为 ajax 请求实现长轮询的 C# 服务器端部分?

我的架构涉及浏览器每 3 秒通过 ajax 轮询一次更新,我想将其更改为长轮询

我希望有 1, 2.. {n} 个客户端长轮询,等待更新,并在服务器上发生一些事情以指示等待的客户端返回。我的第一个想法是使用EventWaitHandle,如果我只想支持 1 个客户端,我可以轻松做到这一点。我只是有一个会阻止客户端,也许有超时,也许不是。无论哪种方式,an只允许我支持 1 个客户端(因为它只唤醒 1 个等待线程)并且我想要 n 个客户端。AutoResetEvent WaitHandleWaitOneAutoResetEvent

我很确定我需要使用 a ,但我不确定何时调用它(唤醒线程时)。我应该只是在和之间的一些任意数量ManualResetEvent WaitHandleResetSetThread.SleepSetReset吗?

在伪代码中,唤醒逻辑是

  • 得到ManualResetEventWaitHandle
  • 称呼Set
  • 确保所有等待的客户端都已唤醒,同时防止新请求通过
  • 现在打电话Reset,所有等待的客户都收到了他们的更新

这是我遇到困难的第 3 行。目前我正在折腾拥有一个LastTxID让客户端/服务器维护并可能使用 2 个等待句柄的想法。然而,在我对这个实现发疯之前,我想在这里获得反馈,看看他们将如何实现唤醒逻辑。

编辑:假设我已经通过调整 IIS 或通过 WCF 或其他解决方案托管来解决与最大并发用户数相关的问题。我只想关注清醒的逻辑。

0 投票
1 回答
5075 浏览

c# - 使用 EventWaitHandle 类

在 Process AI 需要从 Proces B 接收事件。我决定使用 EventWaitHandle。在这两个过程中,我都编写了以下代码:

然后在进程 A 中调用 Set() 方法:

如何在流程 B 中接收“MyGUID1221”事件并执行一些操作?如何制作“MyGUID1221”监听器?

谢谢。

0 投票
1 回答
5502 浏览

c# - AutoResetEvent 设置超时后调用

来自 MSDN “如果没有等待线程,则等待句柄保持信号状态,直到线程尝试等待它,或者直到它的Reset方法被调用。”

线程#1:

线程#2:

在我的应用程序中,线程 #1 正在向外部应用程序提交请求并等待信号或超时。如果收到来自外部应用程序线程#2 的响应,则设置等待句柄。即使set在超时之后也可以调用它。我的问题是

1)极有可能Method2在超时后调用导致设置信号。这是否意味着以后只要有对 Thread #1 的请求,它就WaitOne(10000)没有任何作用,会立即释放?

2) 无论如何我不能setMethod2超时的情况下打电话吗?这会对 Thread #1 造成任何问题吗?

0 投票
1 回答
1329 浏览

c# - 是否可以检查 System.Threading.EventWaitHandle 是否可以打开而不抛出异常?

我有

有没有办法在不抛出/处理异常的情况下做到这一点?

0 投票
1 回答
1364 浏览

c# - 使用 EventWaitHandle 确保跨多个用户的单个实例

合作者使用 Processing 构建了一个原型,该原型连接到 Sparkfun RFID 阅读器,我认为使用的是通过 USB 的串行连接。我们已经将原型部署到了许多试用者的家中,而我愚蠢地忽略了一个常见的使用场景是用户切换。因此,我正在编写一个包装器,以确保只有一个原型应用程序实例在机器上的所有用户中运行。

作为一个简单的控制台应用程序,我正在测试我的第一次尝试。这是代码:

(注意,我知道这段代码存在以下问题:(1)杀死不是正在运行的原型的 Java 进程,以及(2)没有代码可以响应同时启动的大量实例,一次只有两个。但这不是我的问题是关于。)

在单个用户帐户下进行测试可以正常工作。我可以启动我的应用程序,它反过来启动原型,如果我启动我的应用程序的第二个实例,第一个实例会在第二个实例重新启动原型的另一个实例之前杀死原型的初始实例。

但是,如果我尝试从两个不同的用户帐户执行此操作,它会失败(静默)。如果我

  1. 启动我的应用程序的一个实例,它启动原型
  2. 切换用户
  3. 启动我的应用程序的一个实例,然后它在没有我的应用程序的情况下启动原型,从步骤 1 首先关闭现有实例。

谁能看到我的代码有什么问题?我应该如何在同一台机器上的多个同时用户会话中使用 EventWaitHandle?

0 投票
2 回答
5910 浏览

c# - 线程等待 WaitOne() 时停止应用程序的正确方法

我正在玩AutoResetEvent,我的应用程序没有结束,我想我知道为什么:线程仍在运行,因此应用程序不会终止。通常,在 中Main(),我按下一个键后,应用程序就会终止。但是控制台窗口不再关闭。我有一个简单的控制台应用程序:

终止此应用程序的正确方法是什么?我是否需要保留对每个线程的引用并调用每个线程Abort()?有没有办法发出信号waitHandle让等待它的线程终止?(我不这么认为,但我认为值得一问。)

0 投票
1 回答
126 浏览

java - Java中的进程管理和EventWaiter

我将用 Java 实现一个小型守护程序应用程序。下面是我的要求。有人可以给我一些建议吗?

  1. 启动和监视另一个进程(如果崩溃则重新启动它)
  2. 在 Windows 和 Linux 上运行(首选 SUSE)
  3. 此外,守护程序应用程序本身永远不会退出,它应该在收到操作系统关闭信号时正常退出。

对于 Windows,我可以调用几个 Win32 API 来启动 Process 并监控其状态。守护程序应用程序可以是 Windows 服务,其生命周期由 Windows 自动管理。

问题是,如何针对 Linux 执行此操作。此外,如何编写一组代码来处理两个操作系统而不是两个?

0 投票
2 回答
1052 浏览

.net - 多个进程和等待句柄

基于这个问题,我决定根据 Jim Mischel 的建议尝试使用 waithandles/eventwaithandle 作为我的解决方案。我“几乎”让它工作。这是代码

同样,这来自几乎我们所有应用程序都继承自的基本形式。当我们使用单个应用程序时,它可以完美运行。如果您运行多个从基本表单继承的应用程序并且有人仅单击一个消息框,则有时会在另一个应用程序中显示第二个消息框。我最初将等待句柄声明为静态/共享,并认为这是问题所在,但事实并非如此。我还尝试让每个应用程序创建自己的等待句柄并将其传递给基础,并产生相同的效果。有谁知道为什么看起来等待句柄在不同的应用程序之间共享?哦对了,waitHandle其实是一个ManualResetEvent

0 投票
2 回答
787 浏览

c# - 同步线程和事件

在我的控制台应用程序中,在线程中同步事件很困难。

应用程序以一些随机数的形式给出结果,然后是线程块,并且在发出EventWaihandle数据线程退出的信号后打印在控制台上。

目的是通过以下方式打印数据,例如

*随机数据

线程块

随机数据

线程块

……

线程退出

...*

样本输出

1234

线程 2 块

2345

线程 0 块

3456

线程 1 块

……

线程 1 退出

线程 4 退出

……

如何以这种方式在线程内同步线程和事件。