我有一个wpf应用程序,它需要大约30秒来创建地图/图形。我读到过,没有一种简单的方法可以绑定到UI呈现线程来获得进度更新。所以我打算在一个值转换器上使用一个计数器,它给我的地图上色,但它也在UI线程上,所以我的问题是,有没有人找到了一些巧妙的方法来处理渲染线程?
谢谢。
发布于 2010-02-23 23:05:32
您可以在允许您在函数中调用ReportProgress的BackgroundWorker中创建地图/图形,您可以在其中设置完成百分比并引发ProgressChanged事件来更新UI。
发布于 2010-02-23 23:44:44
当你说UI渲染线程时,你指的是WPF内部的隐藏渲染线程或UI线程?
在任何情况下,有一个单独的线程来构建您的地图并通知UI进度对您没有帮助?
发布于 2010-02-24 00:16:53
我不确定这是不是你要找的东西。
我使用类似于下面代码的东西来加载大约300张图像(大约200MB),并且根本没有UI减慢。(用户可以看到加载的每个图像,我只保留了一个空的占位符图像,直到最终图像加载完成)
图像被加载到后台线程中,然后调用函数将它们实际放入WPF场景中。
下面是一个使用textbox的简单示例。您可以从任何线程调用此函数,它将确定是否需要将更改为GUI线程。(当然,对于我的项目,我使用的是位图,而不是文本框)。
delegate void UpdateUIThreadDelegate(String str);
public void DisplayString(String strMessage)
{
if (this.InvokeRequired)
{
UpdateUIThreadDelegate updateDelegate = DisplayString;
this.BeginInvoke(updateDelegate, strMessage);
return;
}
myTextBox.Text = strMessage;
}干杯安东
https://stackoverflow.com/questions/2318781
复制相似问题