首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GDI+与多线程

GDI+与多线程
EN

Stack Overflow用户
提问于 2020-02-03 13:57:03
回答 1查看 1.1K关注 0票数 0

根据我发现的所有信息,GDI+可以以多线程的方式使用,但GDI+对象不能同时从多个线程中使用。

我的C++ main应用程序中有两个线程偶尔崩溃的问题(一个是启动时关心启动窗口,另一个是执行初始化操作的主线程)。这些崩溃是不可复制的,但有一个共同点:在程序在调试器中停止时,这两个线程中至少有一个处于GDI+操作中。

这里有人对GDI+线程有了解吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-04 03:00:56

最好使用“双缓冲区”机制为每个映射创建2个存储器直流s,逐个使用。也就是说,当后台线程在存储器DC B上绘制时,主窗口读取存储器DC A以供显示,并在绘图完成时通知主线程。在通知主线程之后,交换A和B (B被显示,A是下一个后台线程操作的对象)。

关于GdiplusStartup

您可以在一个线程上调用GdiplusStartup,在另一个线程上调用GdiplusShutdown,只要在调用GdiplusShutdown之前删除所有GDI+对象(或让它们超出作用域)。

该文档还包含了其他一些用法。它还提到如何在GDI+中使用动态数据交换(DDE):

如果要初始化应用程序的GDI+ (通过在InitInstance函数中调用InitInstance),则必须取消GDI+后台线程。

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

https://stackoverflow.com/questions/60040720

复制
相关文章

相似问题

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