在哪里实例化表单

本文关键字:表单 实例化 在哪里 | 更新日期: 2023-09-27 18:02:20

我可能需要一些技巧,因为我觉得我这样做的方式不是"正确"的方式,并且在Visual Studio中创建新的GUI应用程序时默认的方式不适合我。

我所做的是,我有一个主类在我的应用程序做所有的工作。它启动了几个收集和管理数据的线程,我希望它"报告"到GUI表单它在做什么。

要在main.cs(应用程序的入口点)上完成(上面的),需要在两个单独的线程中初始化worker类(主类)和表单。沟通是由代表来完成的,而不是像我希望的那样"流畅"。

如果主表单在主工作类中被激活,那么它拥有gui表单会更好吗?而不是两个独立的线程,需要一些工作才能相互通信?

在哪里实例化表单

这里有一种方法。对于您正在做的事情来说,这可能不是最优的,这取决于您要传递的数据:

您可以将表单作为启动对象,并使用BackgroundWorker控件。

BackgroundWorker有几个事件,所有这些事件都自动在表单线程上运行,所以您不必担心委托。

BackgroundWorker支持报告进度,并且在后台线程完成时,您可以在完成事件中向主线程返回一个对象。

我很肯定,你不能在同一个线程上开始一个表单,如果你做你的方法,初始化表单将阻塞,直到表单关闭(虽然我可能是错的,因为我还没有真正尝试过)