Delphi 线程安全MakeObjectInstance?
如何在线程中使用Delphi 线程安全MakeObjectInstance?,delphi,delphi-xe6,Delphi,Delphi Xe6,如何在线程中使用MakeObjectInstance?我知道有线程安全的AllocateHwnd函数发布在各个地方,但我似乎找不到MakeObjectInstance的线程安全函数 但是我发现这不适用于XE6?从评论中可以看出,您希望在主线程之外创建一个窗口句柄。您正确地注意到,您不能使用AllocateHWnd,因为它不是线程安全的。但是,您可以使用线程安全版本,例如Primoz提供的版本 您评论说它不允许您使用CreateWindowEx。但由于代码是作为源代码提供的,因此定制代码以满足您的
MakeObjectInstance
?我知道有线程安全的AllocateHwnd
函数发布在各个地方,但我似乎找不到MakeObjectInstance
的线程安全函数
但是我发现这不适用于XE6?从评论中可以看出,您希望在主线程之外创建一个窗口句柄。您正确地注意到,您不能使用
AllocateHWnd
,因为它不是线程安全的。但是,您可以使用线程安全版本,例如Primoz提供的版本
您评论说它不允许您使用CreateWindowEx
。但由于代码是作为源代码提供的,因此定制代码以满足您的需要是很简单的
这是一个比
MakeObjectInstance
更干净的问题解决方案。它避免创建运行时thunk,并利用窗口句柄的实例内存。记忆存在的原因 你可以自己编写一个。用例是什么?为什么线程中需要TWinContol
?再说一次,用例是什么?正如Remy和David所问的(这两次你都忽略了),为什么在线程中需要TWinControl
?VCL不是线程安全的,TWinControl
是VCL的一部分,因此TWinControl
不是线程安全的。有什么问题吗?是的,我已经阅读了您的要求。我的评论是针对你的评论(后来删除了),你说“我需要从线程访问TWinControl”。我担心,忽视对更多信息的要求并不会真正有助于让人们来这里帮助你。也不是删除人们回应的评论,然后试图将他们视为愚蠢的问/说。我已经更新了问题。使你的答案过时。我认为没有任何过时之处