后台工作人员等待用户在 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,如果这有什么不同

后台工作人员等待用户在 GUI 中填写文件

我不

认为让您的后台工人线程循环等待用户输入是一个好主意。UI 已经这样做了,你应该使用它。

在我看来,你应该这样做:

  1. 向后台工作者DoWork事件添加一个事件处理程序,该处理程序将调用您在 (2.( 中提到的函数。
  2. 将事件处理程序添加到控件,该处理程序将在用户输入内容时执行。如果控件具有TextBox则应向TextChanged事件添加事件处理程序。
  3. 在上面的事件处理程序中,调用worker.RunWorkerAsync(textBox.Text)

这样,处理函数 (2.( 将仅在需要时调用,并且您不会浪费资源等待两个线程上的用户输入。

这是我最后的做法:

while(string.IsNullOrEmpty(_emailData.CaptchaCurrent))
    Thread.Sleep(100);

创建了一个变量来存储用户输入,并让线程等待该特定变量具有值。

这一切都在一个线程中进行。