Replies: 2 comments
-
不推荐这样使用,while 会导致整个主线程被阻塞,除了 msgbox 显示以外,其他窗口的渲染应该正常执行而不是被一个 msgbox 阻塞掉。这个 msgbox 是一个异步的,当点击确定或者取消后,投递新的任务到 UI 线程来执行任务,而不应该阻塞整个主线程。 |
Beta Was this translation helpful? Give feedback.
0 replies
-
非常感谢
…------------------ 原始邮件 ------------------
发件人: "netease-im/NIM_Duilib_Framework" ***@***.***>;
发送时间: 2022年6月6日(星期一) 上午9:37
***@***.***>;
***@***.******@***.***>;
主题: Re: [netease-im/NIM_Duilib_Framework] 关于duilib显示一个模态窗口后程序仍往下执行的问题 (Discussion #421)
不推荐这样使用,while 会导致整个主线程被阻塞,除了 msgbox 显示以外,其他窗口的渲染应该正常执行而不是被一个 msgbox 阻塞掉。这个 msgbox 是一个异步的,当点击确定或者取消后,投递新的任务到 UI 线程来执行任务,而不应该阻塞整个主线程。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
之前开发一直都是用的原生的duilib,最近要换到网易的duilib,有这样一个功能:
先弹出一个提示框,然后根据提示框的选择再进行下一步操作,之前是使用一个模态窗口来实现。
原理就是模态窗口show了之后程序会停止然后等待模态窗口的操作再继续运行,于是我在试验网易duilib 的msgbox控件的时候,我把它原本的showwindow()函数改成了showmodalfake(hwnd);
按照设想,我在显示弹出提示框的下一步加上断点
然后点击listitem,它应该等我关闭这个模态窗口后才会执行到return这一步。但是实际上点击后,窗口还没弹出,就已经执行到return这一步。
于是我进入showmodalfake(hwnd);发现它的实现如下:
对比之前我使用的原生duilib的showmodal()
两者一对比,发现是少了一个while的过程,于是对网易的showmodalfake(hwnd)做了以下修改
解决了这个问题,实现了只有模态窗口操作后后才能进行下一步操作。
但是不知道这样是否合理,望指正。
Beta Was this translation helpful? Give feedback.
All reactions