【问题标题】:Hosting Controls over Multiple Threads in .Net在 .Net 中托管多线程控制
【发布时间】:2013-09-04 13:50:54
【问题描述】:

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

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

我想要做的是实例化这些以在它们自己的线程中分离控件并在这些线程上执行所有任务,例如绘画和更新。 usercontrol 线程将简单地过滤消息并将其定向到正确的控件。我将通过覆盖 WndProc 方法来做到这一点。

处理所有我擅长的消息内容,但是如何实例化控件。一旦创建这些控件的线程完成,线程就不会死亡并且控件变得不可访问。抱歉,目前没有代码,我倾向于在编写任何代码之前进行大量研究,但似乎找不到任何有用的东西。

【问题讨论】:

    标签: c# .net multithreading winforms controls


    【解决方案1】:

    这不会很好地工作。所有 UI 元素(表单、控件等)都具有线程关联性要求,这些要求规定它们只能从创建它们的线程中访问。试图将托管在一个线程上的控件嵌入到另一个线程的另一个控件中是徒劳的。即使你可以让它工作(并在这里松散地使用术语“工作”),结果可能充其量是不可预测的。你需要重新考虑你的方法。将所有控件托管在同一个线程上,然后将任何耗时的操作转移到工作线程会好多。请记住,仅让工作线程忙于与 UI 无关的操作。操作完成后,您可以将结果编组到 UI 线程,在那里它可以适当地分派给控件。

    【讨论】:

    • 谢谢布赖恩,我想做的是将两个控件绘制在单独的线程中,以便它们同时绘制(我知道在谈论线程时“同一时间”通常是不正确的,但我我想我可以这样解释。)。我想要这个是为了表现和乐趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多