首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何更新不同线程中的组件?

如何更新不同线程中的组件?
EN

Stack Overflow用户
提问于 2018-08-08 02:05:08
回答 2查看 0关注 0票数 0

我正在编写一个.NET CompactFramework应用程序,它在PDA上显示地图。

我已经创建了一个临时组件来绘制它自己的整个地图,使用这些组件中的几个组成了大图。我这样做是为了避免在一步内绘制整个地图的延迟。

我想知道的是在它们自己的线程中绘制这些部分,这样映射看起来就像一个单一的实体,并且避免冻结用户界面的其余部分。

地图的每一块都是用它的onPanne方法绘制的。我的问题是不知如何告诉系统“请在线程中执行此代码”。

类似于:

代码语言:txt
复制
protected override void OnPaint(PaintEventArgs e)
    {
       // <code to be executed in a thread>
       e.Graphics.paintTHis();
       e.Graphics.paintThat();
       whateverItTakesToPaintThisPieceOfTheMap();
       // </code to be executed in a thread>
    }

你知道怎么做吗?还是我的做法完全错了?

EN

回答 2

Stack Overflow用户

发布于 2018-08-08 10:08:33

这种做法是错误的。更新UI的代码必须在UI线程上运行。如果从另一个线程更新UI,将得到一个异常。

票数 0
EN

Stack Overflow用户

发布于 2018-08-08 12:00:04

在后台线程中绘制内存中的地图,然后呈现(在UI线程中)该光栅图像在准备就绪时显示。如果可能,请使用BufferedGraphics,否则使用GDI。

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

https://stackoverflow.com/questions/-100000528

复制
相关文章

相似问题

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