问题标签 [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 投票
2 回答
1389 浏览

vb.net - Application.DoEvents 需要很长时间

我有这样的 Sub(),使用 GeckoWebBrowser 下载 HTML 页面

我的问题是 Application.DoEvents 需要很长时间才能处理和完成。PS 我正在使用 STA 线程来运行这个 Sub()

0 投票
1 回答
848 浏览

c# - 多线程时如何避免可怕的 Application.DoEvents()

所以我一直在阅读很多不鼓励使用 Application.DoEvents() 的文章,甚至说它永远不应该被使用,但我似乎无法为我的场景找到一个好的替代方案......应用程序我正在研究的有一个方法,当主 GUI 表单首次启动时,该方法由 this.Shown 事件调用。该方法执行一些需要大约一分钟时间的工作,因此相同的方法还创建了一个本质上是自定义进度条的表单。请记住,此过程当前是单线程的,因此当此方法运行时,主 GUI 和进度条变得无响应。如果用户在此期间单击任何地方,屏幕将变为空白。所以我正在努力将这个方法所做的一些工作放在 BackgroundWorker 线程中。这是我想出的:

除了错误处理被证明是困难和混乱之外,一切都运行良好。在更新主线程中的现有对象时,是否有更好的线程工作方式?

谢谢阅读。

0 投票
3 回答
10963 浏览

c# - 从没有 DoEvents 的 WebBrowser 控件中获取 ReadyState

这已在此处和其他站点及其工作中多次出现,但我想以其他方式提出想法:

使用导航或发布后获取 ReadyState = Complete,而不使用 DoEvents,因为它的所有缺点。

我还要注意,在这里使用 DocumentComplete 事件无济于事,因为我不会只在一个页面上导航,而是像这样一个接一个地导航。

它今天的工作方式是使用 DoEvents。我想知道是否有人有适当的方法来等待浏览器方法的异步调用,然后才能继续执行其余的逻辑。只是为了它。

提前致谢。

0 投票
2 回答
557 浏览

ms-access - 运行列表框查询时表单挂起

每次用户进入新记录时,我的表单都会挂起几秒钟。表单上列表框的记录集是一个查询。表单一直挂起,直到该查询完成并填充列表框。

我的用户需要能够快速滚动浏览记录。目前,用户必须等待列表框查询完成才能移动到下一条记录。如何阻止表格挂起?

有没有办法使用 DoEvents 来解决这个问题?

下面是我的代码。我怀疑没有必要查看所有这些代码,但我将其全部共享以防万一。

我正在使用访问。

谢谢!

0 投票
2 回答
1377 浏览

vbscript - 如何在 QTP 11 中使用 DoEvents?

我正在尝试在我的 QTP 脚本中使用 DoEvents - 但出现错误 -类型不匹配:'DoEvents'

下面是我的脚本:

您能否建议 Doevents 在 QTP 中是否有效?如果没有,那么任何其他替代方案或任何其他使用相同方法的方法?

0 投票
3 回答
295 浏览

c# - DoEvents 与其他任何东西 -> 用于长时间 COM 操作

我有一个 WPF 程序,我的模型需要加载一个“Out-of-Proc”(.exe) COM 组件,以便在用户在 UI 上执行操作时实现一些验证。我想通知用户,将进行长时间的操作,让他知道应用程序很忙,而不仅仅是冻结。但在 COM 操作完成后,UI 上的任何操作都会发生。

我认为任何 COM 通信都应该在主 UI 线程上完成。它消除了在主 (UI) 线程之外的另一个线程上运行的任何解决方案。

我尝试了很多选择但没有成功:

我看不到如何从需要刷新 UI 的模型中实现同步操作。我的操作有一个属性“IsLoading”,我从我的视图中订阅了该属性,并且我尝试根据其状态更新 UI,但在 WPF 中似乎不可能?

还有其他建议吗?

我可以使用 async/await 并从另一个运行另一个调度程序(有点复杂)的线程执行我的 COM 操作,并且会失去所需的同步性(用户需要 COM 操作的结果才能继续其工作)吗?

主要针对盲人...一些更清晰的解释(有关所需同步性的更多详细信息):

当用户单击 TreeView 项目时,我加载了一个网格,然后需要验证在网格中输入的数据是否仍然有效。要进行验证,我需要通过 COM 加载应用程序并自动加载文档,然后解析它并验证网格中的数据(在视图中的网格模型中)。这需要 10 秒。如果我在另一个线程上执行此操作,则用户可以执行一个操作来选择在网格中添加一个新行,该行仍然取决于与前一个文档加载的同一个 COM 应用程序。我仍然需要等待应用程序加载。这是一个同步动作。我的应用程序依赖于该 COM 应用程序,其加载的文档处于有效状态,以便用户采取更多操作。但我需要给用户一些关于我正在做的事情的反馈(启动 COM 应用程序并加载文档)。在另一个线程上执行 COM 操作只是稍后报告问题,但不能解决用户需要等待操作完成的事实。我想我需要(强制)更新我的 WPF 应用程序,但找不到任何(扭曲的)方法来做到这一点。

0 投票
1 回答
2338 浏览

c# - 需要在循环中调用 Application.DoEvents() 的替代方法

下面的 c# 代码绝不是理想的,我真的只是在寻找关于如何最好地重构它并使代码更安全的建议和建议。

基本上有一个类变量存储安全检查阶段的值(初始化为 0)。当按下我的应用程序中的按钮时,将运行以下代码以检查用户是否有权访问其帐户屏幕。根据方法参数,调用适当的处理程序方法,该方法向用户显示 PIN 输入用户控件(此用户控件是显示全屏和最顶部的自定义控件)。当处理程序代码运行时,下面显示的代码在 do while 循环中调用 Application.DoEvents,以在用户输入其 PIN 时保持一切响应。如果 do while 循环不存在,则在我们有机会验证用户 PIN 是否正确之前,用户尝试访问的屏幕将出现在 PIN 输入屏幕的顶部。

我知道Application.DoEvents()循环调用不是一个好习惯,所以我真的想重新编写这段代码以使其更好。

任何帮助将非常感激。请记住,该问题的解决方案必须适用于 .NET 3.5 Framework。

0 投票
1 回答
287 浏览

vb6 - vb6 杀死/跳过 CreateObject 调用

有人可以建议我如何终止或绕过CreateObject偶尔需要几分钟才能完成的操作吗?基本上我有这个代码:

这在大多数情况下都会立即生效,但对于某些用户来说可能需要几分钟(为什么 - 在这种情况下并不重要)。所以我想做的是设置CreateObject执行时间限制,要么杀死它,要么将我的应用程序与它分离。我一直在DoEvents尝试在挂起时继续处理其他代码CreateObject,但没有任何运气。

0 投票
0 回答
31 浏览

windows-phone-7 - 导致异常的事件如何追踪

我有一个代码,其中 Application.DoEvents 导致问题并引发异常。当打开模式弹出窗口并且应用程序必须等待用户活动时,此代码将被编写为循环执行以处理后台任务,直到用户活动为止。有人可以告诉我如何跟踪(在调试中)从 DoEvents 调用哪个进程导致异常。


这是一些代码。我可以追踪 DoEvents 内部发生的事情吗:

0 投票
0 回答
545 浏览

vb.net - .NET 等效于 VB6 DoEvents + Sleep

我有一个程序,我正在从 VB6 更新到 VB.NET,用于进行光学测量。硬件运行 Win XP 或 Win 2000 Embedded。在原始代码中,有一段使用 DoEvents 和 Sleep 在开始测量后触发:

我尝试用简单的代码替换中间两行Threading.Thread.Sleep(500)(我意识到这可能是不好的做法,但没有大量的 VB 经验,我试图尽可能地保留 VB6 程序)。这使得代码正常工作 - 在第二次尝试。在第一次尝试时,应该进行的测量根本没有,但不会引发错误,并且后续代码可以正确执行。

基于此,我有两个主要问题。首先,有什么我可以简单地替换 VB6 代码来获得所需功能的东西吗?其次,有没有更好的方法来定期查询不使用该Sleep功能的仪器状态?

编辑:

我上面提到的函数是一个辅助函数(我认为这是正确的术语),用于检查仪器是否已完成测量。测量例程包含在 DLL 中,执行它的代码如下所示。