- 主题:mfc里面如何让button实时变灰
耗时长的操作,放到worker线程中执行。做好worker线程或者线程池的生命周期管理(主要是worker线程不要一直闷头干活,要及时检查UI线程设定的通知标志、通知事件,要不然用户已经点了停止/退出,worker线程还在那里死干或者死等)
worker线程不要直接操作界面控件,而是发消息给UI线程让UI线程来操作控件。
worker线程和UI线程的通信,用自定义消息WM_APP+1、WM_APP+2这样的,通过PostMessage(),一般不需要用锁,因为UI线程的消息队列是OS已经串行化好了。
UI线程不能做耗时操作,否则消息循环被阻塞,那就无法绘制控件状态了,更无法响应鼠标键盘
OnButtonClicked( )这种control event handler是在UI线程中执行的。
--
修改:z16166 FROM 125.35.125.*
FROM 125.35.125.*
VS2017/2019已经有async/await了,不过学习曲线有点陡,MS blog给的例子要么太简单,要么太复杂
https://docs.microsoft.com/en-us/cpp/build/reference/await-enable-coroutine-support?view=vs-2019
【 在 xiaoju 的大作中提到: 】
: 老实讲你搞不清这个的话,还是直接用C#吧,await轻松搞定
: 其实解决方法也很简单,就是仿照C#的机制自己做个await
:
--
修改:z16166 FROM 123.115.131.*
FROM 123.115.131.*
visual c++的native能用的,visual studio的release notes去年还是前年已经宣告可以用于production code了
【 在 xiaoju 的大作中提到: 】
: 印象中这个只能用在UWP里面,传统MFC还是用不了
:
--
修改:z16166 FROM 123.115.131.*
FROM 123.115.131.*
一试便知。这帖子的尾部的github代码
https://devblogs.microsoft.com/cppblog/using-ibuv-with-c-resumable-functions/
【 在 xiaoju 的大作中提到: 】
: 不需要uwp库了?
: :
--
FROM 123.115.131.*