问题标签 [waithandle]

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

c# - new WaitHandle [] 怎么可能返回 null?或者是吗?

我在我的项目中使用FluorineFx 1.0.0.17NetConnection并用于连接到 RTMP 主机(Flash 媒体服务器)。我正在为 PRTG 创建一个 RTMP 监控探针。

在文件的第 173 行主应用程序进程结束时总是出现错误WorkItemsQueue.cs(此处显示的第二个代码行)

这是调试器向我展示的:

在此处输入图像描述

调用堆栈:

进程结束时,我的意思是整个程序按应有的方式工作,但是在 Main 方法结束时,调试器会抛出此非托管代码错误(仅在启用非托管代码调试时显示)。

在此处输入图像描述

我不知道如何调试它,也不知道如何避免它。任何帮助,将不胜感激。

更新 1:

在此处输入图像描述

主线程停在:

0 投票
1 回答
230 浏览

android - 在android游戏中创建方法或wait()/notify()

因此,我将描述我正在尝试做的一般事情。

  1. 我有客户(可用的客户数量有时会因天气、事件或位置而异)
  2. 我有一个饮料架(取决于某些因素,服务时间会有所不同,并增加了补充水罐的时间)
  3. 前来站立的顾客数量因价格、活动和受欢迎程度而异。
  4. 顾客来站,如果另一位顾客仍在站台上接受服务,那么其他顾客排成一列。(经过这么长时间的排队,他们抱怨等待时间)
  5. 我希望有一个日间计时器,所以即使展台没有为客户服务完,他也会因为等待时间而失去他们。

所以我不确定使用 Wait()/Notify() 方式是否最好。我在想,如果我将客户设置为一个班级并将其带入我正在使用展位信息运行销售日的活动中。我会很感激帮助找到一种方法来做到这一点。我仍在阅读其他一些教程,看看我是否可以理解一种方法来做到这一点而不会搞砸。

0 投票
1 回答
8179 浏览

c# - 使用 HttpWebRequest.BeginGetResponse 的最佳超时方法

HttpWebRequest.BeginGetResponse 不尊重 HttpWebRequest(Timeout 或 ReadWriteTimeout)中的任何 Timeout 属性。

我阅读了一些方法来获得相同的结果,但我不知道这是否是最好的方法,我是否应该使用几个调用或者我可以在循环内缩放它(我正在做一个网络爬虫)。

重要的是,最初我的代码不是异步的,我只需要异步,因为我的方法应该接受 CancellationToken。

我关心的是 WaitHandles 和 ThreadPool.RegisterWaitForSingleObject。这不是日常代码,那么我不知道在不久的将来我是否会遇到问题。

调用(同样,它不是异步的)

参考:管理多个 WebRequest 的更好方法

0 投票
0 回答
158 浏览

c# - 不可序列化对象的类似会话的存储选项?

背景(如果需要,请跳过此部分)

如果您愿意,请随意跳过这部分,这只是那些想要更好地理解问题的人的一些背景知识

在我的站点上的一个操作开始时,我启动了几个异步操作。该操作在操作完成之前返回。这就是我要的。但是,View通过此操作加载的 会调用不同控制器中的其他几个操作。其中一些操作依赖于第一页的异步调用的结果,因此我需要能够等待异步调用从另一个控制器完成。我考虑过仅Session用于存储 WaitHandles,但由于 WaitHandles 不可序列化,我显然不能这样做。


精简版:

我需要能够WaitHandle从一个控制器的某处存储一个异步对象,以便可以在不同的控制器中可靠地检索它。这些WaitHandles也需要特定于用户,但我可以处理那部分。只是不要列出一个会使这样做变得不可能的选项。

0 投票
1 回答
4646 浏览

vb.net - 如何在 vb.net 中使用 waitHandle

我有 VS2010,我正在开发一个 Windows 窗体应用程序。

因此,我动态创建了线程(取决于用户输入),这些线程的处理可能需要一段时间(极端情况下需要几天)。所以我在表单上放了一个按钮,希望能够“暂停”或“暂停”线程。我查看了 .suspend 方法,它已被替换(我尝试过使用它,但有时它确实会失败 - 导致 UI 崩溃)所以我发现的新方法是“waithandle”。我已经阅读了这方面的文档,但我不知道如何使用它。

这是每个线程的基本结构:

然后在一个单独的按钮中,我想放置暂停代码。快速暂停并不是那么重要,在循环的下一次运行时暂停就可以了(每次运行都非常快,它只会执行数百次)。我假设我必须将等待句柄检查放在循环的开头,但我实际上并不知道如何实现这一点。这是我的等待句柄暗码:

所有线程都将立即暂停(主 UI 线程除外),所以我认为这意味着我只需要一个等待句柄,但我不确定这一点。

无论如何,如果有人能告诉我哪些代码进入了 do 循环,哪些代码进入了暂停按钮,我想我可以完成其他所有工作。:)

非常感谢!

弗雷泽


来自评论:

谢谢!我让它工作了。这是我的暗示:

(那是在代码的顶部(就在'public class form 1'下面)然后在它具有的线程中:

最后在暂停/取消暂停它拥有的线程的按钮中:

0 投票
3 回答
14489 浏览

c# - 异步/等待任务和 WaitHandle

假设我有 10N 个项目(我需要通过 http 协议获取它们),在代码中启动 N 个任务来获取数据,每个任务依次获取 10 个项目。我把物品放在一个ConcurrentQueue<Item>. 之后,这些项目以线程不安全的方法逐个处理。

我不知道 if 条件可以放在标记的语句中***。我这里不能使用Task.IsCompleted属性,因为我await在任务中使用,所以任务很快就完成了。而一个bool[]表示任务是否执行到最后的a看起来真的很难看,因为我认为ManualResetEvent可以做同样的工作。谁能给我一个建议?

0 投票
1 回答
2152 浏览

c# - 如何在 C# 中等待线程完成执行?

我有一个快速连续调用的函数,它有一个开放的数据库连接。我的问题是,在关闭一个数据库连接之前,调用该函数的另一个实例,我可能会在数据库中收到死锁。

我努力了:

但我收到一个线程错误,程序冻结。我相信它与没有参数的线程启动函数有关。

谢谢你的帮助

0 投票
1 回答
2649 浏览

c# - 调用 C# ASMX Web 服务

我有一个 ASMX Web 服务,我需要在工作中使用它。我通过 ASPX 页面调用此服务以在第 3 方系统上创建新实体。我无法访问该服务的底层代码,它只是为了让我与另一个系统进行通信。

我无法确定我是否正确调用了该服务,我想知道是否有人可以提供一些建议。

我已经安装了 ASMX 页面,这给了我一个名为“ConfirmConnector”的类,我称之为 BeginProcessOperations 方法。我想等待它返回然后解析结果。结果应该是 XML 格式,然后我会逐步获取我想要的数据。

问题是有时这个过程会在我身上消失,即当我调用我的“EndProcessOperations”方法时,什么也没有发生。我没有收到错误,什么都没有——我的代码死了,方法返回了

我的调用代码是:

我的处理程序代码是:

谁能建议我是否以正确的方式处理此代码,并且有人知道为什么我的代码在处理程序中的此行之后随机炸弹:

谢谢你的帮助,保罗

0 投票
0 回答
98 浏览

c# - 如何在使用waithandle处理之前等待用户完成数据输入

我有允许用户输入数据的 UI,每次当用户输入数据时,我都会引发一个事件,说数据在这个位置发生了变化并将其放入队列中。我有一个后台线程,它使用waitanywaithandle监听事件. 每次数据更改时,我都会对队列中的所有项目强制执行操作。它工作正常。问题是当用户输入两个值时,会有两个更改事件。队列中有两个元素,但第一个事件首先获得并立即强制执行操作,当时队列中只有一个项目。下一个事件来了,它将处理队列中的下一个项目。99% 的时间进程处理队列中的一个事件,因为人工数据输入的速度很慢,事件处理的速度很快。只是想知道是否有办法,我可以在处理事件周围放置一些逻辑来等待然后处理?

等待句柄部分

在进程事件中

0 投票
3 回答
557 浏览

c# - WaitHandle 在不应该关闭时关闭

这段代码大部分时间都有效,所以我在考虑一些竞争条件。结果类是不可变的,但我认为问题不在于该类。

编辑:抱歉,在调用 GetResult() 方法之前,我错过了对 this.worker.RunWork() 的调用。这显然导致(有时)两次执行相同的工作,尽管我不确定为什么 waitHandle 在waitHandle.Set()之前关闭,尽管 Completed 事件触发了两次。这根本没有影响 IO 工作(结果是正确的;在我更改代码以手动关闭waitHandle 之后)。

因此,即使问题不完整,铱星的答案也应该是最接近的答案(如果不是正确的答案)。