问题标签 [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.
c# - C# AutoResetEvent WaitOne 被调度程序停止
如果您注释掉两个 grdMain.Dispatcher.Invoke(...);,上面的代码就可以完美运行。如果您注释掉 *.Set(); ,它也可以正常工作。和 *.WaitOne(); 但是为什么?我两个都需要^^。我不明白...
c# - 使用 AutoResetEvent.WaitOne() 和 .Set() 暂停后台线程
我有以下代码。我正在尝试制作可以暂停、继续和停止下载器正在运行的后台线程的主窗体按钮(私有线程线程)
Form1.cs
此代码在 Windows 窗体上运行。我有所有这些操作的按钮(暂停、继续、停止)
暂停和继续按钮在表单上有代码
问题是按下暂停按钮将冻结主窗体而不是后台线程。
c# - 我对 System.Threading.Timer 的使用可以更有效吗
我正在寻找一些关于使我的代码更高效的建议。我想做的是System.Threading.Timer
每隔一小时左右运行一些工作,工作不会很繁重,但我希望有一个不占用太多资源的代码。我计划在 Windows 服务中运行此代码。
这就是我到目前为止所拥有的。
你们有什么感想?我可以让我的代码更有效率吗?
非常感谢所有建议!
threadpool - 不稳定的应用程序使用 SqlDependency。几种状态和错误
我有一个使用 SqlDependency 在分离线程池中运行的 Windows 应用程序,该应用程序表示一个日志监视器 UI,它获取添加到数据库中特定表中的最新行并在 DataGridView 中查看它。您可以从此LINK查看应用程序源代码,或遵循此脚本。
问题: 我有很多错误情况,(第一条评论中的图片)
(No. 1) : 我得到了这个错误对话框,我不知道它的原因。
(第 2 名):我的网格视图中什么也没有(没有错误,也没有数据)。
(第 3 名):虽然表格有行,但我只有列名,没有行。
我需要帮助。
c# - Windows Phone 项目中的 AutoResetEvent - 无法调用处理程序
它来自 Windows Phone 项目。我正在尝试调用几个处理程序,一个处理程序一个处理程序来接收有关 GPS / 反向位置的信息。我想知道为什么它不能正确运行。
当我只设置 1 个坐标时就可以了。我有关于 Street 等的消息。但是当有更多坐标时,我的处理程序不会被调用。
c# - AutoResetEvent + Background Worker 相互结合
我对这两者协同工作有一个疑问,因为我不相信它们是齐头并进的。
我有一些使用后台工作者的代码,并在 DoWork() 中执行一些逻辑。此逻辑仅使用 TcpClient 对象并将数据发送到外部设备。
我的问题是在 DoWork() 中,我调用 AutoResetEvent.WaitOne()。这是否会停止当前线程,直到调用 AutoResetEvent.Set()?例如,如果 AutoResetEvent.Set() 从未被调用过,Background Worker 会简单地停止并且不执行任何操作吗?
不确定这是否本质上是糟糕的设计,但不幸的是支持它:(
编辑一些伪代码
c# - AutoResetEvent 使用问题
我正在尝试使用 AutoResetEvent 对象来阻止线程直到异步。WebClient 的下载完成。
我的问题是,一旦我调用 WaitOne(),线程就会锁定在那里,VS 永远不会到达 DownloadComplete 事件处理程序方法中的断点。
这是我的代码
所以我在构造函数中用 false 实例化通知器,因为我不希望它的状态已经发出信号。除非我读错了 MSDN?
有什么明显的错误吗?
thread-safety - 多线程间代码执行
我正在编写一个需要与串口通信的程序。我主要关心的是防止冲突并确保不会同时从不同的功能写入/读取。
首先,有一个系统定时器从头开始,用于定期向串口写入数据,并通过给定的超时值监听响应。因此,它将有一个 Elapsed Event 并完成工作。
其次,还有另一个功能具有更高的优先级,需要立即将数据写入串行端口。
场景 1. Elapsed 事件每 1 分钟触发一次,如果仍然挂起前一个事件或 SendImmediately 函数,则永远不会继续。
场景 2. 如果 SendImmediately 被调用,则需要等待当前正在运行的 OnTimedEvent 完成。同样, OnTimedEvent 的下一次运行将停止,直到 SendImmediately 完成。
问题。如何在上一个或 SendImmediately 完成之前阻止 OnTimedEvent 的下一次运行?基本上是为了防止它们之间的干扰。
我在这里进行了一些问答。有很多建议的答案,如下所示:
- 禁用和启用计时器
- AutoResetEvent(2 路信号)
- 手动复位事件
- Monitor.Enter / Monitor.Exit(锁定)
- 队列
- 睡眠/加入/Task.Wait(阻塞)
我没有坚实的基础来确定哪种方法对我来说是正确或合适的,因为每种方法都有不同的场景。非常感谢任何建议。
c# - 在 C# 中使用 autoresetevent 读取和写入文件
我写了一个简单的线程同步程序。但是当我运行这个程序时,我得到一个错误“进程无法访问文件'D:\Vivek.txt',因为它正被另一个进程使用。” 为什么我收到此错误。
当我替换代码时
至
该程序第一次显示相同的错误。之后它永远不会给出任何错误。请任何人告诉我错误区域,原因以及最好的解决方案。
c# - AutoResetEvent 设置后立即重置
考虑以下模式:
此模式的目的是允许外部消费者等待某个事件(例如 - 消息到达)。WaitForNextEvent
不是从类中调用的。
举一个应该熟悉的例子,考虑System.Diagnostics.Process
. 它公开了一个Exited
事件,但也公开了一个WaitForExit
方法,该方法允许调用者同步等待,直到进程退出。这就是我要在这里实现的目标。
我需要的原因signal.Reset()
是,如果一个线程调用WaitForNextEvent
after signal.Set()
已经被调用(或者换句话说,如果.Set
在没有线程等待时被调用),它会立即返回,因为该事件之前已经发出信号。
问题
- 是否保证在调用线程调用之前
WaitForNextEvent()
会发出信号?如果没有,实现方法的其他解决方案是什么?signal.Reset()
WaitFor