如何将子项添加到网格异步?

时间:2014-07-19 16:31:51

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

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

感谢任何建议......

1 个答案:

答案 0 :(得分:1)

不确定异步是否是这里的解决方案,因为我读到你的问题,听起来你正在向UI中添加数千个UI元素,这些元素都在触发。

仍然没有多少事情继续......但

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

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

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