一个消息循环,当不进入此消息循环时,一切操作正常。
当一进入此消息循环后,各种操作响应立即变慢,大约有近1秒钟
延迟,奇怪的是用Application.Processmessage转换CPU控制权,
反而使各种按钮等操作变得不响应了,比延迟还严重,退出此
消息循环一切变的正常。求助:在进入此消息循环的前提下,
使各种操作响应变快,怎么解决?
当一进入此消息循环后,各种操作响应立即变慢,大约有近1秒钟
延迟,奇怪的是用Application.Processmessage转换CPU控制权,
反而使各种按钮等操作变得不响应了,比延迟还严重,退出此
消息循环一切变的正常。求助:在进入此消息循环的前提下,
使各种操作响应变快,怎么解决?
WM_MsgDataReady = WM_USER + 100;
procedure OnReceiveData(var msg: TMessage); message WM_MsgDataReady;
procedure TFrmMain.OnReceiveData(var msg: TMessage);
begin
DoDataMsg(msg.WParam);
end;
procedure TFrmMain.DoDataMsg(Channel: integer);
var
status: integer;
StreamBuf: array[0..500000] of byte;
TemBuf: array[0..24, 0..200] of byte;
begin
m_length := 500000;
status := ReadStreamData(CameraGroup[Channel].CardHandle, @StreamBuf,
@m_length,
@frameType); //m_length参数输入缓冲的大小,输出一帧数据的长度
..
..
end;
其他操作就是一些响应的按钮点击事件,如果上面的那个消息循环执行,
则其他操作变慢,而且按钮事件里加入Application.processmessage反而使
按钮变的不可用了。
寻求解决办法