问题标签 [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 回答
1004 浏览

.net - 在 Application.Idle 中调用 DoEvents

我远离 Application.DoEvents,因为存在重新进入的问题,并且总是有另一种方法可以避免阻止 UI。我一直喜欢在 Application.Idle 事件中做后台工作,作为多线程的简单替代方案。但是,对于长时间运行的任务,是否可以在 Application.Idle 中使用 DoEvents 循环运行操作?

这里的逻辑是,在我们调用 DoEvents 的 Application.Idle 事件中,没有消息排队,因此我们应该无法重新输入代码。每个花絮都会被足够快地处理,以至于它不应该显着阻塞消息队列(或 UI)。

那么,这种方法有什么害处或缺点吗?即,在 Idle 事件中调用 DoEvents 是否安全?我确实知道C# 5 将有一个功能来解决这种情况,但是对于我们这些不使用 C# 5 的人(目前我们大多数人),出于普遍的好奇,这是一个好的计划?或者是否有更简单的替代方法来在长时间运行的操作期间处理消息而不诉诸多线程?

请不要以为我认为这是一颗灵丹妙药。我知道它带有与任何异步方法相同的缺陷。我知道一个人必须仍然能够保持他的应用程序处于一致状态。而且我知道有多线程解决方案。我正在避免那些。为什么?因为多线程比较复杂。我不认为这是不切实际的。

0 投票
3 回答
595 浏览

c# - 我什么时候知道调用 DoEvents?

如果我正在循环执行长时间的操作(例如,处理文件)并且我想更新进度条,我需要使用 DoEvents,据我所知。

但是在函数的每个循环中调用它只会导致进度条的动画播放得非常快(或慢,取决于操作)。我知道这是因为 DoEvents 允许进度条“呼吸”,因为缺少更好的词,导致它和表单的其余部分刷新。

我的问题是,你怎么知道调用 DoEvents 是合适的?显然,您不能随心所欲地调用它 - 通常您会喜欢它 - 这会导致零星的动画等等。那么是否有一些快速的方法来检查表单/应用程序是否需要调用 DoEvents?

0 投票
1 回答
4145 浏览

vba - 在 VBA 中的用户窗体上使用 DoEvents 而不是重绘有什么好处?

在 VBA 中的用户窗体上使用 DoEvents 而不是重绘有什么好处?是因为性能,为了尽量减少屏幕闪烁等事情的烦恼,还是因为您需要更新的不仅仅是表单?

从 VBA 的角度寻找一些关于差异的澄清。

0 投票
4 回答
49206 浏览

vb6 - “DoEvents”在 vb6 中有什么作用?

“DoEvents”在 vb6 中有什么作用?为什么我会收到错误消息“堆栈空间不足”?这是什么意思 ?

0 投票
1 回答
591 浏览

doevents - 无限循环中的后台工作者

除了doevent()另一种方式,在这个无限循环中以形式运行另一个控件。

我想和后台工作人员一起做,但我失败了。

0 投票
4 回答
18357 浏览

c# - Application.DoEvents() 是否仅适用于 WinForms?

只是Application.DoEvents()为了表格?

我以为这个命令是用来确保之前的所有命令都被处理但现在在阅读文档之后,我不确定了。

0 投票
2 回答
1334 浏览

jquery - jQuery 计时 - 想要在方法中添加类似于 DoEvents() 的内容

我有一个包含大约 260 行的数据表。这些行中的每一行都由诸如 parentHeaderName 之类的属性标识。单击该表的标题时,我有一些 jQuery 可以将标题短暂更改为 ajaxload.gif 图像,如下所示

然后我通过调用切换所有 260 行

不幸的是,我无法让将标头更改为 ajaxload.gif 的代码部分正常运行。就好像该语句和切换语句都在同时运行。这意味着,用户永远不会看到 ajaxload.gif。我可以让图像显示的唯一方法是在两个语句之间放置一个 alert('...') 消息。显然,这不是作为解决方案所期望的。我试过使用 delay() 和 setTimeout 无济于事。我想我需要的是某种在 jQuery 或 javascript 中等效的 DoEvents,它可以让图像在切换执行之前显示。

有任何想法吗?

谢谢,克里斯

更新:感谢反馈的人。这是实际的代码:

(此代码实际上将标头更改为 expand.gif 或 collapse.gif,而不是 ajaxload.gif。)

我确实尝试了延迟建议

但它没有任何帮助。当需要切换的行数很少时——比如说,最多 20 行——没有问题。但在某些情况下,我需要隐藏一堆(例如 260),就好像浏览器需要几秒钟才能通过 DOM 来完成所有隐藏的事情。这就是我最初希望使用 ajaxload.gif 图像的原因。

谢谢,克里斯

0 投票
10 回答
196138 浏览

c# - Application.DoEvents() 的使用

可以Application.DoEvents()在C#中使用吗?

这个功能是一种允许 GUI 赶上应用程序其余部分的方法吗,就像 VB6 的DoEvents功能一样?

0 投票
2 回答
1258 浏览

.net - .net 挂在 Application.DoEvents

我们的遗留产品之一是 Winforms 应用程序,它不使用后台线程,而是在主 UI 线程上执行所有操作。它在这个主线程上运行一个恒定循环,每 20 毫秒调用一次 Application.DoEvents()。有时,应用程序会在 DoEvents 调用中挂起。我的问题是如何找出代码挂起的队列事件调用?

PS有人知道我可以用来获取进程中每个线程的堆栈跟踪的工具吗?

此外,这仅发生在生产客户端,我们现在必须解决。也不可能在客户端安装 VS。

0 投票
2 回答
3129 浏览

vb.net - DoEvents 是否只影响当前线程?

我有一个简单的“工作”表单,它在自己的线程上运行,让用户知道应用程序在长时间运行的操作中没有死机。为了让工作表格更新,我必须插入一个DoEvents()电话。

我很好奇,这只会为我所在的当前线程发送消息,还是会为整个应用程序发送消息?我希望主窗口在操作完成之前保持无响应,所以我对这种行为很好奇。下面是工作表单的代码。

为了清楚起见,我对我的代码很好,但我想知道DoEvents()线程的行为。