关于线程中响应事件的问题(100分)

  • 主题发起人 主题发起人 fossil000
  • 开始时间 开始时间
F

fossil000

Unregistered / Unconfirmed
GUEST, unregistred user!
我的问题:主线程创建一个新线程,新线程创建四个控件(也可直接是主窗口中的控件),
4个控件为录音,放音,idudpclient,idudpserver,录音有一个响应事件,idudpserver也
有一个响应事件,如何在新线程中对这2个事件响应并处理。我的目的是在主线程接到通知
后,创建新线程单独进行录音,发送,接收,放音的功能,与主线程无关,直到主线程
接到通知停止线程为止,防止由于indy的阻塞模式导致主窗口无反应。在主线程中我已
成功,望各位大侠帮帮忙。这种想法可不可行,如何做,感谢!
 
下面的方法行吗?
设置一个全局变量,IsRecording
按下录音按钮时,IsRecording := True, 同时录音线程.Resume;
在录音线程里面
while not Terminateddo
begin
if not IsRecording then
Suspend;
// Record...
end;
在主线程接到通知停止线程时,IsRecording := False;
 
这些我会,关键是录音ACMwavein控件中有onData事件,idudpserver有onUdpRead事件。
如使用队列,在ondata,onudpread事件代码中将数据加入队列,再由另一线程循环尝
试读出,处理。我觉得可能效率还是不高。我希望最好是线程自动接收ondata事件数据
,直接处理。谢谢你能回答我的问题.
 
ACMwavein 有没有 onBufferFull 事件?在里面用回调函数发送数据。
服务器端在OnUDPRead中播放缓冲区中的数据,可以不用线程。
 
向线程发消息postthreadmessage()。在线程里peekmessage
 
后退
顶部