【发布时间】:2019-09-06 18:06:04
【问题描述】:
我正在开发一个使用 WinForms 的项目,当用户单击 Form 上的控件而不是活动窗口时,我遇到了并发问题。每当用户激活它们以防止它们显示旧/脏信息时,我的表单都会刷新,但如果他们单击非活动 Form 上的按钮,则数据不会刷新,这可能会导致问题。
我知道 windows 中的某些程序会强制您在执行任何其他操作之前选择窗口,有没有办法在我的 VB.NET 程序中执行此操作?
【问题讨论】:
-
it doesn't get a chance to refresh it's data- 为什么?当它的按钮被点击时它会激活,不是吗? -
那里有异步处理吗?所以,当有人点击某个东西时,异步的东西还没有完成,你会得到异常/错误行为吗?
-
您可以设置可变状态,并在刷新任何内容时使其为真,完成后将状态设置为假。并且在你的按钮点击中,如果状态为真,什么也不做,如果为假,则正常执行
-
它非常模糊,听起来那个按钮的 Click 事件正在做一些非常顽皮的事情。就像挂起主线程太久,没有足够的并发性。用户输入总是在任何挂起的重绘之前处理。将 Me.Update() 作为事件处理程序中的第一条语句,以便在代码在树林中消失之前进行重绘。