大家好,在线程内如何使用 Create 方法 建立新窗体(100分)

  • 主题发起人 主题发起人 ogre
  • 开始时间 开始时间
O

ogre

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,在线程内如何使用 Create 方法 建立新窗体
谢谢
 
在Synchronize()方法里创建Form创建以及相关事件就行了.
不过这样和在其他窗口里创建窗体没什么区别.
要真正的在线程里创建窗体还是用API写的好,因为TForm
不是线程安全的
 
我现在是用begin
thread的,
我现在用CreateThread 试一下,
谢了,
张兄
 
begin
Thread 也是调用 CreateThread 的啊,
我想这是不行的了,
当在线程内调用 Create 生成窗体时,
好像进入了死锁,得看下寄存器的值了
 
建议你在线程里创建窗体的函数都用Synchronize保护,否则要出问题,
TApplication不是线程安全的,所有的From的创建都要通过他来管理,
而且消息的传递都是通过他的循环,所以你在线程里创建From没有任何
意义,除非你自己用API重写一套VCL类,可能能在线程里创建和释放.
 
我是在方法中调用begin
Thread ,
没有写线程类,
在线程函数内就不能建立新窗体吗,
 
因这个方法涉及到一些数据需要显示在新的Form上修改,
 
这么说,我只能用单线程运行了,
呵,线程不安全的,又有多少是安全的
 
先写一过程,将创建窗体部分及交互代码写入该过程,如(CreateForm);
在线程执行时使用Synchronize(CreateForm);就行了
 
后退
顶部