多线程 怎么在子线程中触发主线程创建窗体
我做一个聊天程序 就是一个人可以跟多个人聊 每个聊天窗口就是一个线程
我用的indy IdTCPServer1 作接收端
每有人向程序发送聊天信息时 IdTCPServer1 新建一个线程进行聊天
但是新建的线程是子线程 而子线程中是不可以创建窗体的请问各位大哥该怎么解决啊
或者类似问题该用什么方法处理?
我做一个聊天程序 就是一个人可以跟多个人聊 每个聊天窗口就是一个线程
我用的indy IdTCPServer1 作接收端
每有人向程序发送聊天信息时 IdTCPServer1 新建一个线程进行聊天
但是新建的线程是子线程 而子线程中是不可以创建窗体的请问各位大哥该怎么解决啊
或者类似问题该用什么方法处理?
解决方案 »
- 小妹刚来没有分 但是有个delphi问题想问问各位大虾 请好心人帮帮忙吧。。
- 关于多线程异步调用InternetOpenUrl过程中取消任务时的延时问题
- 如何使按下Enter(回车)键后使焦点自动跳到窗体上的下一个控件上?
- 如何安装第三方控件
- Delphi程序如何检测串口连线?
- 问个技术问题。有2个字串 s1:='Form2',s2:='btn2'. 怎样通过s1、s2设定form2.btn2.visble:=false;
- =========<socket高手:socket终结问题>==========
- delphi XE2如何获取16位的MD5加密?
- 我的邮件服务器告一段落,请大家帮忙测试,谢谢!
- 有Delphi 6 吗?
- delphi基础语法问题
- 祝福,2010年D版的朋友们幸福快乐!(有源码)
{
//在拥有主窗体的线程上创建子窗体
this. Invoke ( new GetActiveWindowHandle ( GetActiveWindow ));
}
delegate void GetActiveWindowHandle ( );
void GetActiveWindow ( )
{
//在这里写创建新窗体的代码
frmChat fc = new frmChat ( );
fc. Show ( );
}
然后在子线程的方法了调用 GetActiveWindowMehtod(); 这是一个c#的子线程创建窗体的例子,有谁能帮我把它翻译成Delphi的吗?
你要用INDY的,可以都在主窗口的IdTCPServer1 的ONEXECUTE里读数据, 然后根据不同用户把数据传到窗口去显示,如果用户不存在的就新建窗口
也就是说,必须在子线程中调用主线程创建窗体
大哥们你们发言的时候能不能多说几句呢?
procedure TForm2.IdTCPServer1TIdCommandHandler0Command(ASender: TIdCommand);
这样用就没问题了
ASender.Thread.Synchronize(SendMsg);