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