问题标签 [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.

0 投票
1 回答
84 浏览

vba - Excel 中 DoEvent 的界面控件

我有一个宏来遍历一个范围并将电子邮件返回到 .Display 基于

我的模块中的元素。我重申:

我想知道是否有一种简单的方法可以在界面中合并一个计数器功能,在该界面中我触发这个模块来告诉它我希望起始行在哪里以及我希望结束行在哪里。例如,如果我有一个单元格包含“从行开始”单元格,其中包含一个增加或减少按钮来增加或降低值,然后是一个“行结束”单元格,其中包含两个按钮,可以增加或减少结尾基于我需要开始或停止的行的值?那有意义吗?

谢谢!

0 投票
1 回答
95 浏览

c# - 如何在功能工作时进行表单更新

我有一个尝试连接到服务器并发布有关进度和结果的信息的功能。但我刚刚发现,当我的功能运行时,应用程序将“冻结”,并且由于整个连接可能需要一段时间,用户可能会认为应用程序出现故障并尝试退出。您是否知道如何在继续其余功能之前获取更新表单的功能,以便用户知道应用程序正在运行。

另外,如果您的答案与线程有关,请抛出 1 或 2 条解释行,因为我只在理论上知道线程并且从未自己使用过。感谢您的关注。

0 投票
1 回答
396 浏览

.net - 在主线程上调用 Application.DoEvents 是否与在 ThreadPool 中相同?

我们尝试对一些旧的遗留代码进行自动化测试。有一个表单可以打开,运行计时器并从端口读取数据。unittest 打开表单,但计时器不会滴答,直到 Application.DoEvents 启动进程处理 windows 消息队列。它是不同的,因为它是从 unittest 执行的,而 Application.Run 不是代码的一部分。

但是我们不能通过 Application.DoEvents 阻塞 unittest 线程,因为我们需要通过 assert 等待和检查数据。

但是这个片段并没有达到我的预期。它与从 WinForm App 执行表单不同吗?我可以从线程池调用 Application.DoEvents 吗?

我真的不想真的不修改遗留代码。我只需要让单元测试在当前解决方案上工作。

0 投票
1 回答
1772 浏览

ms-access - Access 中的 VBA DoEvents() 或替代方法

我正在阅读有关允许我运行宏而不锁定我的 Access 会话直到它完成运行的选项。我有一些用于 Access 的 VBA 宏,它们执行 SQL SELECT 和 UPDATE 语句,并且可能需要将近一个小时才能运行。这目前会为我锁定 Access,直到它完成运行。

我正在查看有哪些选项,以便我可以使用宏并在后台完成运行报表时仍然使用 Access。我遇到了 DoEvents() 作为一个选项,但几乎所有事情都对我们说不。那么有什么好的选择呢?

0 投票
3 回答
3762 浏览

c# - Application.DoEvents 与 await Task.Delay 循环

令我非常不满的是,我需要在我的一个应用程序中使用 WebBrowser 控件。

我还需要做的一件事是等待元素变为可见/类更改/等,这在DocumentCompleted事件触发后发生,在我的情况下使事件接近无用。

所以目前我有类似...

现在我已经在多个地方读到了DoEvents()邪恶并且可能导致很多问题的地方,所以我考虑将其替换Task.Delay()为:

Thread.Sleep()所以我的问题是,除了将阻塞事件 1ms 并且在上面的示例中设置了更大的延迟这一明显事实Task.Delay()之外,执行这两种方法之间的实际区别是什么,哪个更好,为什么?

PS:请坚持这个问题,虽然我不一定介意关于如何WebBrowser通过使用其他东西来解决控制问题本身的其他想法(想到js注入),这不是回答的地方,这个问题是关于这两位代码有何不同,哪些会被认为更好。

0 投票
0 回答
529 浏览

vba - Excel Mac 2011 VBA 中用于形状动画的 DoEvents 不起作用

我正在尝试制作水平移动点的动画,表示表示非线性动力系统的微分方程的解。我正在使用一个形状(一个小椭圆来表示该点),我的想法是使用等待函数更新它的位置参数(我知道它确实有效,从方程解中获取实际经过的时间步长) 我遇到了问题,因为在所有宏执行期间,形状的位置没有通过多个值列表更新,只显示列表中的最后一个位置。我正在向 DoEvents 发送垃圾邮件以强制执行屏幕更新。但由于某种原因无法正常工作。我正在使用 OS X El Capitan。

我在网上看到有人演示使用几乎相同的代码,创造奇迹:https ://www.youtube.com/watch?v=6fh5yBE6Moo

即使像以下这样简单的事情也不会按预期工作:

msgbox 将显示 FIRST,然后当宏结束时,我会看到该点设置在其零位置。timeout 是我已经测试过的等待功能,并且效果很好(顺便说一下,更多的 DoEvents 垃圾邮件):

这真的意味着在这样的条件下工作吗?先感谢您。

0 投票
1 回答
1652 浏览

vb6 - VB6 Winsock 多个 TCP 连接 > DoEvents 问题

几年前,我使用 VB6 制作了一个软件,它用作 TCP 服务器,接收来自客户端的多个连接。

该软件的基本思想是侦听特定端口,接受来自不同客户端的连接,并将每个连接传递给单独的 winsock,后者分析数据,查看数据库,回复正确的消息,然后关闭连接。

这是一些代码:

应用程序启动时初始化套接字:

接受连接:

接收数据、分析数据并回复:

一切正常,但现在连接数增加了(每秒几十个),所以软件开始Out of stack space出现异常(因为DoEvents)。

我知道在很多情况下DoEvents它是邪恶的,但是如果我删除它,应用程序 UI 将不会响应(因为线程上的过载)并且某些数据可能不会被传递。

所以,我的问题是:有没有人知道如何在使用/不使用的情况下解决这个问题DoEvents


注意:我知道 VB6 并不真正支持多线程,在这种情况下可能是 PITA。我实际上计划升级软件并使用 重新创建它.Net,但这需要一些时间。这就是为什么我需要在 VB6 中解决这个问题,因为该软件现在是用 VB6 编写的。

0 投票
1 回答
1892 浏览

c# - 如何在 Xamarin Forms 中显示应用启动过程中的进度

我有一个 Xamarin Forms 应用程序,它需要在启动期间执行一系列长时间运行的操作。我想使用带有简单状态消息的页面来通知用户进度,该状态消息会随着序列的进行而变化。

操作序列是作为一组异步方法实现的,我将它们包装在一个异步容器方法中,该方法还包含更新 UI 的代码。这是一个简化版本:

但是,无论我如何调用序列,在序列执行完成之前,UI 都不会更新。

App我尝试从构造函数中在自己的线程上运行序列:

我还尝试从OnStart方法中异步调用序列:

在 WinForms 应用程序中,这个问题可能会解决Application.DoEvents(尽管我知道这种方法有其自身的问题)。在任何情况下,Xamarin Forms 似乎都不支持这样的东西。

这似乎是一个常见的要求,我想它的实现必须有一个标准模式。有谁知道它是什么?

非常感谢,

蒂姆

更新:响应@BraveHeart 的建议,我能够进一步简化我的测试代码以显示什么不能正常工作。

以下示例引用了 2 个静态页面,每个页面仅包含一个标签。第一页宣布一个长时间运行的序列的开始,第二页宣布它的完成。我的目标是看到这两个页面在第一页和第二页之间有 1 秒的延迟。实际上,发生的情况是我从未看到第 1 页,因为两个页面是一起呈现的。

0 投票
0 回答
270 浏览

vb.net - 用 doevent vb.net 读取串口

我想用 VB.net 在 RS232 上接收数据命令

目前我的代码运行良好,但除非没有收到数据,否则无法使用 userForm,因为代码在 serialport.read 中不断。如何允许用户访问表单。我计划实现 DoEvent() 函数,但是如何实现呢?你有想法吗?

这是我的代码:

谢谢,

0 投票
1 回答
293 浏览

excel - 为什么我不能在 DoEvents 前面使用 Call?

在 VBA 中,您可以Call在它们之前调用您的方法/函数,以明确告诉编译器您不想使用返回值(如果有的话)。

现在DoEvents 函数也应该可以通过 调用Call,但我无法实现。

当我输入:

编译时它只是说“语法错误”。

为什么我不能使用Callinfront of DoEvents


在 Excel 2016、IIRC 中使用 VBE 中的 VBA,它在 2013 年、2010 年等中也不起作用。