gpt4 book ai didi

c++ - SetScrollPos 阻塞

转载 作者:行者123 更新时间:2023-11-28 02:27:42 29 4
gpt4 key购买 nike

在我的多线程 mfc 应用程序中,m_view->SetScrollPos 处于阻塞状态并且所有应用程序都被卡住。 View 是在另一个线程中创建的,这是这种行为的原因吗?

//SetScrollPos(SB_HORZ,pos);
::SetScrollPos(GetSafeHwnd(), SB_HORZ, pos, true);

SetScrollInfo() 也是如此。

最佳答案

原因很简单:

更改滚动位置会导致创建一些窗口消息。如果您在另一个线程中,并且托管窗口的线程尚未准备好通过 GetMessaage/PostMessage 处理消息,则使用 SendMessage 的线程将被阻塞,直到可以传递消息。

这是一种正常且有据可查的行为。

我的建议:切勿从另一个线程执行 UI 操作。选择一种中立的通信方法来通知其他线程有关更改(PostMessage、Timer 和数据字段等)...

关于c++ - SetScrollPos 阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29962724/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com