后台工作人员等待用户在 GUI 中填写文件
本文关键字:文件 GUI 工作人员 等待 用户 后台 | 更新日期: 2023-09-27 18:34:32
我有一个后台工作者,它应该做两件事。
1.将用户控件添加到 GUI
2.读取用户在 SED 用户控件中输入的值并将其传递给函数
最好的方法是什么?
我正在考虑将 2 个事件处理方法传递给 DoWork 事件。
第一个涉及第1点,第二个涉及第2点。
然后我会这样做:
1.内部工人。进度更改事件 - 辅助角色将用户控件添加到页面
2.内部工人。ProgressChanged 事件 - 在一段时间循环中,工作线程等待填充所需的 UI 值
3.工人内部。运行工作线程已完成事件 - 告诉工作人员执行编号 2 的任务。
这是一种正确的方法吗?
如果不是,最好的方法是什么?
如果这是正确的方法,那么工人等待值的最佳方法是什么?只是一会儿循环,里面睡觉还是有更复杂的方法?
提前谢谢你。
编辑 1:我正在使用 WPF - XAML,如果这有什么不同
我不
认为让您的后台工人线程循环等待用户输入是一个好主意。UI 已经这样做了,你应该使用它。
在我看来,你应该这样做:
- 向后台工作者
DoWork
事件添加一个事件处理程序,该处理程序将调用您在 (2.( 中提到的函数。 - 将事件处理程序添加到控件,该处理程序将在用户输入内容时执行。如果控件具有
TextBox
则应向TextChanged
事件添加事件处理程序。 - 在上面的事件处理程序中,调用
worker.RunWorkerAsync(textBox.Text)
这样,处理函数 (2.( 将仅在需要时调用,并且您不会浪费资源等待两个线程上的用户输入。
这是我最后的做法:
while(string.IsNullOrEmpty(_emailData.CaptchaCurrent))
Thread.Sleep(100);
创建了一个变量来存储用户输入,并让线程等待该特定变量具有值。
这一切都在一个线程中进行。