从非GUI线程创建窗体
本文关键字:窗体 创建 线程 GUI 从非 | 更新日期: 2024-10-21 19:50:04
我读过关于如何在非gui线程C#中创建表单的问题,但它对我没有帮助。
我有一个表格列表,里面有一个玩家列表,每个玩家都有自己的表格(我在Player.cs和playperformer.cs中分开)
问题是:如果我使表继承自Form(显示Form并使visible=false,因此它不显示),那么我可以使Methodinvoker
//table.cs
class Table : Form{
var player = Players.First();
this.Invoke(new MethodInvoker(player.ShowForm));
//player.cs
void ShowForm() {
var form = new PlayerForm();
form.show();
}
这是有效的,没有任何问题或副作用。但是有点讨厌,从Form继承Class,只是为了使用Invoke。(我的桌子不需要表格,所以我想解决这个问题)
如果我没有表单,如何使用invoke?
感谢
我建议您不要尝试在非UI线程上创建表单,除非您有非常令人信服的理由这样做。这样做会产生复杂性,可以通过使用其他更标准的方法来避免。
例如,如果您希望在后台对每个表单进行处理,则可以对每个单独的表单使用BackgroundWorker实例
如果您有一个长时间运行的进程,如您链接到的问题中所示,该进程可以使用事件请求通过标准UI线程显示表单。