代码之家  ›  专栏  ›  技术社区  ›  dannyhut

在.Net中托管对多个线程的控制

  •  0
  • dannyhut  · 技术社区  · 12 年前

    我有一个问题,三天后我仍然找不到答案。

    我正在创建一个用户控件。此控件上有两个控件。一个是编辑字段,另一个是用于保存行号和其他用户添加内容的边距。

    我试图做的是实例化这些控件,在它们自己的线程中分离控件,并在这些线程上执行所有任务,例如绘制和更新。用户控制线程将简单地过滤消息,并将其引导到正确的控件。我将通过重写WndProc方法来实现这一点。

    做所有我可以做的消息,但是如何实例化控件。一旦创建这些控件的线程完成,线程就不会死,控件也无法访问。对不起,目前没有代码,我倾向于在编码之前做很多研究,但似乎找不到任何有帮助的东西。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Brian Gideon    12 年前

    这不会很有效。所有UI元素(窗体、控件等)都有线程相关性要求,这些要求规定只能从创建它们的线程访问它们。试图将托管在一个线程上的控件嵌入到另一个线程的另一个控件中是徒劳的。即使你能让它发挥作用(这里用“工作”这个词来形容),结果充其量也可能是不可预测的。你需要重新思考你的方法。会的 最好将所有控件托管在同一个线程上,然后将任何耗时的操作转移到工作线程。请记住,让工作线程只忙于与UI无关的操作。一旦操作完成,就可以将结果封送到UI线程,在那里可以将结果适当地发送到控件。