0

我已经阅读了这个问题如何从非 gui 线程 C# 中创建表单,但它没有帮助我。

我有一个包含玩家列表的表格列表,每个玩家都有自己的表格(我在 player.cs 和 playerform.cs 中将其分开)

问题是:如果我让表格继承自表单(显示表单并使其可见 = 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。(我的桌子不需要表格,所以我想解决这个问题)

如果我没有表格,我该如何使用调用?

谢谢

4

1 回答 1

2

我建议您不要尝试在非 UI 线程上创建表单,除非您有非常令人信服的理由这样做。这样做会产生复杂性,可以通过使用其他更标准的方法来避免。

例如,如果您希望在后台对每个表单进行处理,您可以为每个单独的表单使用BackgroundWorker实例。

如果您有一个长时间运行的流程,例如您链接到的问题中所示,该流程可以使用事件来请求通过标准 UI 线程显示表单。

于 2012-08-07T04:06:09.377 回答