首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF UI线程状态

WPF UI线程状态
EN

Stack Overflow用户
提问于 2010-02-23 22:21:52
回答 4查看 592关注 0票数 3

我有一个wpf应用程序,它需要大约30秒来创建地图/图形。我读到过,没有一种简单的方法可以绑定到UI呈现线程来获得进度更新。所以我打算在一个值转换器上使用一个计数器,它给我的地图上色,但它也在UI线程上,所以我的问题是,有没有人找到了一些巧妙的方法来处理渲染线程?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-23 23:05:32

您可以在允许您在函数中调用ReportProgress的BackgroundWorker中创建地图/图形,您可以在其中设置完成百分比并引发ProgressChanged事件来更新UI。

票数 3
EN

Stack Overflow用户

发布于 2010-02-23 23:44:44

当你说UI渲染线程时,你指的是WPF内部的隐藏渲染线程或UI线程?

在任何情况下,有一个单独的线程来构建您的地图并通知UI进度对您没有帮助?

票数 0
EN

Stack Overflow用户

发布于 2010-02-24 00:16:53

我不确定这是不是你要找的东西。

我使用类似于下面代码的东西来加载大约300张图像(大约200MB),并且根本没有UI减慢。(用户可以看到加载的每个图像,我只保留了一个空的占位符图像,直到最终图像加载完成)

图像被加载到后台线程中,然后调用函数将它们实际放入WPF场景中。

下面是一个使用textbox的简单示例。您可以从任何线程调用此函数,它将确定是否需要将更改为GUI线程。(当然,对于我的项目,我使用的是位图,而不是文本框)。

代码语言:javascript
复制
    delegate void UpdateUIThreadDelegate(String str);

    public void DisplayString(String strMessage)
    {
            if (this.InvokeRequired)
            {
                UpdateUIThreadDelegate updateDelegate = DisplayString;

                this.BeginInvoke(updateDelegate, strMessage);

                return;
            }

            myTextBox.Text = strMessage;
    }

干杯安东

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2318781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档