我试图将我的工作代码与我的 GUI 代码分离到一个完全不同的类中,但我希望能够向我的 GUI 报告进度更新和文件输出。例如,我想让我的 GUI 对工人类说,“从串行端口读取十行,但在收到时向我报告你读到的每件事”。目前我最好的方法是让 GUI 循环十次,并在每个循环中向工人类发送一个命令来读取一件事并返回它。
我真的更希望将所有循环都保留在我的工人阶级一侧,因为它将有更多关于可用信息的信息(实际数据量将是可变的,并且工人阶级已经可以访问数据量可用,我不希望将其发送回 GUI 类来运行循环本身。
我已经调查了后台工作人员,但这似乎只报告了在长时间操作期间完成的百分比,没有别的,所以这对我没有多大帮助。有人知道我如何做到这一点吗?
下面是一个程序的外壳,试图(希望)更好地说明我想要做什么。您将如何编辑代码以执行我的要求?
GUI的主要类:
class Main_Class
{
...
/* Assume in the area we have instantiated these items and placed them on the form:
* Button DoSomething: A button to do something
* TextBox ShowInfo: A text box to report something from the worker class
*/
Worker_Class timewaster = new Worker_Class();
private void buttonDoSomething_Click(object sender, EventArgs e)
{
timewaster.a_lengthy_task();
}
}
单独的工人阶级:
class Worker_Class
{
...//Various Setup stuff up here
void a_lengthy task()
{
int iteration = 0;
while(iteration < 10)
{
Datetime saveNOW = Datetime.Now; //lets say I report this back to the the GUI to write in that ShowInfo box
Thread.sleep(10000); //To waste time and make this lengthy
//Your code here to facilitate sending saveNOW back to the the Main_Class and display it on the ShowInfo textbox.
iteration++
}
}
}