Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
GamebabyRockSun_QQ
GRSD3D12Sample
提交
617af6b3
G
GRSD3D12Sample
项目概览
GamebabyRockSun_QQ
/
GRSD3D12Sample
10 个月 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
G
GRSD3D12Sample
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
617af6b3
编写于
9月 11, 2019
作者:
GamebabyRockSun_QQ
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修正了MsgWaitForMultipleObjects函数因为bWaitAll参数设置为TRUE时出现不返回,从而停止渲染循环的情况,采取的方法是设置一个Timer消息,使消息队列始终有消息
上级
65566e66
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
2 deletion
+8
-2
6-MultiThread/MultiThreadWithMsgWait.cpp
6-MultiThread/MultiThreadWithMsgWait.cpp
+8
-2
未找到文件。
6-MultiThread/MultiThreadWithMsgWait.cpp
浏览文件 @
617af6b3
...
...
@@ -713,6 +713,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
GRS_THROW_IF_FAILED
(
pICmdListPre
->
Close
());
GRS_THROW_IF_FAILED
(
pICmdListPost
->
Close
());
SetTimer
(
hWnd
,
WM_USER
+
100
,
1
,
nullptr
);
//这句为了保证MsgWaitForMultipleObjects 在 wait for all 为True时 能够及时返回
//13、开始消息循环,并在其中不断渲染
while
(
!
bExit
)
{
//注意这里我们调整了消息循环,将等待时间设置为0,同时将定时性的渲染,改成了每次循环都渲染
...
...
@@ -876,7 +878,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
}
//处理消息
for
(
INT
i
=
10
;
i
>
0
&&
::
PeekMessage
(
&
msg
,
NULL
,
0
,
0
,
PM_REMOVE
);
--
i
)
for
(
INT
i
=
10
;
i
>
0
&&
::
PeekMessage
(
&
msg
,
NULL
,
0
,
0
,
PM_REMOVE
|
PM_NOYIELD
);
--
i
)
{
if
(
WM_QUIT
!=
msg
.
message
)
{
...
...
@@ -892,6 +894,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
else
{
}
//---------------------------------------------------------------------------------------------
...
...
@@ -903,6 +906,9 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
bExit
=
TRUE
;
}
}
KillTimer
(
hWnd
,
WM_USER
+
100
);
}
catch
(
CGRSCOMException
&
e
)
{
//发生了COM异常
...
...
@@ -1148,7 +1154,7 @@ UINT __stdcall RenderThread(void* pParam)
while
(
!
bQuit
)
{
// 等待主线程通知开始渲染,同时仅接收主线程Post过来的消息,目前就是为了等待WM_QUIT消息
dwRet
=
::
MsgWaitForMultipleObjects
(
1
,
&
pThdPms
->
hRunEvent
,
FALSE
,
100
,
QS_ALLPOSTMESSAGE
);
dwRet
=
::
MsgWaitForMultipleObjects
(
1
,
&
pThdPms
->
hRunEvent
,
FALSE
,
INFINITE
,
QS_ALLPOSTMESSAGE
);
switch
(
dwRet
-
WAIT_OBJECT_0
)
{
case
0
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录