【问题标题】:How to add Children to Grid asynchrony?如何将孩子添加到网格异步?
【发布时间】:2014-07-19 16:31:50
【问题描述】:

我有一个 ca 的 Canvas。 100 条直线和椭圆。 现在我将 100 个这些画布添加到 WrapPanel。这个过程大约需要。 4-5 秒。 有没有办法添加/加载这些画布异步?我没有找到这样做的方法,并且 Dispatcher.Invoke 不起作用(因为它不是异步的)。

感谢您的任何建议...

【问题讨论】:

    标签: wpf vb.net asynchronous wpf-controls add


    【解决方案1】:

    不确定异步是这里的解决方案,当我阅读您的问题时,听起来您正在向 UI 添加数千个 UI 元素,这些元素都在触发。

    还有很多事情要做,但是......

    只有一个 UI 线程,因此任何可以卸载到其他地方的工作都会提高性能。

    • 尝试将 Debug.WriteLine 添加到您的逻辑并使用 StopWatch 对象为它们添加时间戳。您可以追踪造成延迟的位置。
    • 查看设置线条和椭圆的代码,您是如何计算任何属性的,例如大小和位置。如果可以使用异步任务方法将其加载到数组中,您可能会得到一些响应。
    • 是同时在屏幕上可见的所有元素。如果没有,请仅加载使用虚拟化面板的那些。

    如果您需要更多指针,您可能需要共享代码。

    【讨论】:

    • 感谢您的回复!我有一个带有 10 个椭圆和 20 行的画布的 UserControl。现在我正在使用 MyWrapPanel.Add(New MyUserControl) 添加 100 个这些用户控件
    • 我尝试了所有这些方法。我更喜欢第二种方法,但我无法从非 STA(?)线程中创建新的 Ellipse/Line 对象......
    • 你有代码可以分享吗?我认为这是任何人都可以提出不同建议的唯一方法。
    猜你喜欢
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2021-09-15
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多