问题标签 [doevents]
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# - 页面不包含 BeginInvoke 的定义
我是编码新手,对于我的第一个项目,我必须从数显卡尺读取信息并将其显示在 Web 应用程序的文本框中。我从另一个项目中找到了一些其他项目的代码,这些代码是在他们使用 Windows 窗体的地方创建的。我正在使用 Visual Studio 2013,并且正在修改他们的代码以使用 Web 应用程序而不是 Windows 窗体。我遇到的麻烦是他们有两行我不理解的代码,并且似乎找不到如何修改它们以满足我的需要的答案。代码是
问题是 BeginInvoke 和 DoEvents() 都有一个错误,说两者都没有定义。有没有办法将其修改为 Web 应用程序?或者有没有办法让这两个定义都知道?
对许多人来说,这似乎微不足道,但我无法弄清楚。任何帮助将不胜感激!
我使用 System 包含以下 using 语句;使用 System.Collections.Generic;使用 System.Linq;使用 System.Web;使用 System.Web.UI;使用 System.Web.UI.WebControls;使用 System.ComponentModel;使用 System.Data;使用 System.Drawing;使用 System.Text;使用 System.Threading;使用 System.IO.Ports;使用 Telerik.Web.UI;使用 System.Windows.Forms;使用 System.Web.Services.Protocols;使用 System.Web.Services
;
c# - 无论如何,线程使 Windows 窗体无响应,但人们抵制 DoEvents()。如何同意那些事情?
不要使用 DoEvents()。使用线程!
这个口头禅正在互联网上漫游,包括 SO。好的,所以我创建了一个简短的概念证明,我尝试只使用线程。所以基本上按钮应该做的是触发向下移动蓝色框。
它在单独的线程中运行 YET windows 窗体没有响应(我无法移动它或再次单击按钮),直到它完成向下移动。
问题是,我搞砸了什么?如果我不应该使用 DoEvents(),那该怎么办?(如果您取消注释该Application.DoEvents()
行,它将变得响应)。
代码
应用布局
c# - DoEvents() 在 FormClosing 中是否也是邪恶的?
关于我建议使用的另一个问题
在 FormClosing 事件中(在完成冗长的计算后, processingLock 立即变为假)。它的目的应该是让应用程序有条不紊地关闭,并且原始发布者没有使用线程。
在我建议的答案中,有人评论说 DoEvents 从来都不好,提供此链接:Use of Application.DoEvents()
我阅读并(我认为)理解了这个问题。在我看来(这仍然是愚蠢的)如果我在 FormClosing 事件中使用上述 DoEvents 则不会发生混淆事件的风险 - 如果无法取消用户的关闭(例如设置 e.Cancel = true) .
我的问题:这是确保应用程序正常终止的有效方法吗?如果不是,为什么?
vb6 - VB6查看消息队列
我在一个非常古老的 VB6 应用程序上工作,它仍然是我们公司的主要项目。在开始这个项目之前,我从未使用过 Visual Basic,更不用说 VB6。我遇到过很多地方都有事件来保持表单响应,并且我越深入研究什么doevents
,在尝试用它们来调试代码时,我就越需要挠头。
我正在研究一种方法,可以判断当我们点击那行代码时 doevent 是否真的会做任何事情。我希望如果有人对窗口泵和消息队列有更多了解,可以告诉我我的方法是否能有效地告诉我这种方法是否有效。我正在尝试使用PeekMessage来查看它们是否是队列中的任何消息,然后再点击 doevents 行。
所以我希望当我打电话时,MyDoEvents
我只会点击Debug.Assert bPeekMessage = True
队列中没有消息的情况。这将允许我在处理旧的未注释代码时判断 doevents 是否确实做了某事。
我对此进行了测试,看起来我只在Debug.Assert
没有事件时才点击,但我仍然不知道我的发现是否准确/可靠。有没有其他人有过尝试查看 doevent 将要做什么的经验?
c# - WPF“DoEvents”:如何实现它?
我为“DoEvents”方法找到了这两个实现:
解决方案 1:
解决方案 2:
你能解释一下这两种实现有什么区别,什么是最适合使用的?
谢谢。
c# - Timer - DoEvents 的替代实现
我是 C# 新手,我需要为一个用于监视硬件的小型应用程序使用计时器。我找到了一些计时器的参考代码,但它使用了 DoEvents()。因为,我运行计时器很长时间,有时是几天和几小时,我开始出现堆栈溢出。我现在明白是 DoEvents() 导致了这种情况,这是大多数人推荐使用的。您建议我使用什么功能代替 DoEvents 来设置我的计时器?
我的代码:
c# - 避免在 C# 中使用 Application.DoEvents()
很多优秀的程序员(包括很多优秀的 Stackoverflow 成员)都反对在Application.DoEvents()
任何情况下使用。实际上,它甚至得到了网络上大量文章的支持,例如这篇文章,关于 SO 的著名辩论,...
虽然,我被困在一个案例中,(我)认为DoEvents()
是唯一的出口(缺乏经验)。介绍就够了,让我们看一些编码。
我有一个“serialPort”组件通过串行通信与控制器连接,发送命令并等待其响应,仅此而已。
在我的 serialPort 的 DataReceived 方法中,我读取了现有的响应并打破了循环
不完全是这样,但这是一个示例代码,显示了我如何通过串行通信接收信息,你能告诉我我在哪里强迫自己陷入这个陷阱吗?
vba - 允许 Excel 在 application.Speech.Speak 处于活动状态时执行操作
我有一个用作倒数计时器的代码(一张纸上最多三个计时器),并且在计时器处于活动状态时会发生一些动作。现在一切正常。当任何计时器达到 0 时,将运行以下代码片段:
从上面的代码片段调用的AlertTIMER
sub 运行Application.Wait
,在它最后一次调用和下一次调用之间创建一个 3 秒的暂停。我包含等待功能的原因是因为在Application.Speech
运行时我无法完成任何其他操作(例如单击终止警报子的“停止”命令按钮)。
有没有办法允许在 Application.Speech 处于活动状态时按下命令按钮,以便我可以删除 Application.Wait 功能?还是我需要保留 Application.Wait 的解决方法?
我曾尝试DoEvents
将它放在第一次哔哔声之前使用,但它不起作用。
c# - Application.DoEvents 永不退出
我正在开发一个遗留应用程序,它到处都有 Application.DoEvents。我完全意识到,由于重入问题,这是不赞成的,但重构目前不是一种选择。
DoEvents 永远不会退出的问题已经开始出现。UI 是响应式的(我可以在用户日志中看到 UI 线程活动),因此 DoEvents 似乎正在发送消息,但由于某种原因它永远不会完成。不幸的是,这个 DoEvents 在主要的数据处理组件中,这意味着它会停止处理服务器响应,因为它卡在 DoEvents 行上。
我们有 Stopwatch 跟踪,它告诉 DoEvents 运行了多长时间 - 令人惊讶的是,我得到了一个日志,它说它运行了 188267770 毫秒,即 52 小时(gulp)。它似乎在星期六凌晨 3 点左右进入这种状态,直到用户在星期一进来并关闭应用程序(没有杀死进程,我可以看到 GUI 线程跟踪优雅地关闭事物),此时 DoEvents 完成并记录计时器数据(因此关闭期间发生的某些事情必须说服 DoEvents 完成)。
当然,这只发生在生产用户的机器上,而不是我的开发盒:)
有没有人见过类似的问题?
我已经反编译了 DoEvents 以及 Conrol.BeginInvoke 如何使用 Windows 消息队列将方法委托推送到 GUI 线程,但我看不到 DoEvents 如何像这样卡住,并保持 UI 响应。
源代码控制差异也不是一个选项,因为自用户拥有的最后一个“好”版本以来已经有大约 30 个版本,而这个新版本存在问题 - 所以大约 200 个文件已更改。
非常感谢保罗
webbrowser-control - 在控制台应用程序中替代 Application.DoEvents 以使 Forms.WebBrowser 加载 javascripts
我在控制台应用程序中使用 System.Windows.Forms.WebBrowser 来呈现网页,然后在其上调用脚本。为了呈现网页,我使用 Application.DoEvents 来加载和执行脚本。
但是有时应用程序会在调用 Application.DoEvents 时挂起。我找不到任何理由。我不认为我在事件循环上造成死锁。
网络上的许多人说根本不应该使用 Application.DoEvents,因为它产生的问题多于解决的问题。所以我认为必须有一个替代方案。但是我搜索了很多,没有找到 Application.DoEvents 的替代方案。
有人知道吗?任何信息表示赞赏。先感谢您!
感谢 Noseratio 的帮助,我完成了代码的起草,但仍然存在冻结问题。
以下面的代码为例(代码太长,所以我把它粘贴在 pastebin 上): http: //pastebin.com/DkDcrirU
当您运行此代码时,偶尔会出现至少一个窗口无法关闭。如果你附加到冻结的进程,你会发现代码卡在下面一行(由“>>>”表示):
有谁知道发生了什么?