在我的项目中,我有主要形式。在那个主窗体上,我在运行时调用用户控件。像这样运行的事件顺序。
扫描条形码 - 对此代码进行一些处理
询问用户“您要扫描更多内容吗?” 然后显示“YES/NO”选项。这不是弹出窗口,我必须在我的触摸屏计算机中为 Kiosk 更新屏幕上的消息。
等待用户输入一段时间。
如果用户点击“是”然后接受其他条形码。
如果用户单击“否”,则进行进一步处理。
如果用户没有及时回复,则按照“否”回复进行进一步处理。
问题:
如何在线程之间显示按钮?
如果用户回复,如何处理按钮单击事件。
void ShowMoreVoucherOption(bool showhide) { if (this.btnYes.InvokeRequired) { this.BeginInvoke((MethodInvoker)(() => btnYes.Visible = showhide)); this.BeginInvoke((MethodInvoker)(() => btnNo.Visible = showhide)); } else { btnYes.Visible = true; btnNo.Visible = true; } Application.DoEvents(); }
我在如下线程之间调用这个例程。这不是 UI 线程。
UpdateProgessLabel("Would you like to add more vouchers?");
ShowMoreVoucherOption(true);
Thread.Sleep(15000);
Dofuthrerporcessing(); // in case user does not give input
现在,等待 15 秒,如果用户输入,则继续按钮单击事件,如果没有,则继续此处。
我不确定 Thread.sleep 是否适合这里。还是我必须使用 ManualResetEvent 和 waitone?以及如何处理那里的按钮点击?