【问题标题】:Thread Safe MakeObjectInstance? [closed]线程安全的 MakeObjectInstance? [关闭]
【发布时间】:2014-07-20 08:18:12
【问题描述】:

如何在线程中使用MakeObjectInstance?我知道在各个地方都发布了线程安全的AllocateHwnd 函数,但我似乎找不到MakeObjectInstance 的线程安全函数。

我找到了这个http://www.atozed.com/Intraweb/Blog/20121030.EN.aspx,但它不适用于 XE6?

【问题讨论】:

  • 您可以自己编码。用例是什么?
  • 为什么你需要一个TWinContol 在一个线程中?同样,用例是什么?
  • Remy 和 David 都问过(而且你两次都忽略了),为什么你需要一个线程中的 TWinControl? VCL 不是线程安全的,TWinControl 是 VCL 的一部分,所以TWinControl 不是线程安全的。
  • code supplied by Primoz 有什么问题?
  • 是的,我已经阅读了您的要求。我的评论是针对您对Remy also commented about 所做的评论(并已删除),其中您说“我需要从线程访问 TWinControl”。恐怕忽略更多信息的请求并不利于让人们在这里帮助你。也不是删除人们回应的 cmets,然后试图将他们视为愚蠢的他们问/说的内容。

标签: delphi delphi-xe6


【解决方案1】:

从 cmets 看来,您希望在主线程之外创建一个窗口句柄。您正确地注意到您不能使用AllocateHWnd,因为它不是线程安全的。但是,您可以使用线程安全版本,例如 Primoz 提供的版本。

您评论说它不允许您使用CreateWindowEx。但是由于代码是作为源代码提供的,因此对其进行定制以满足您的需求是微不足道的。

这是一个比MakeObjectInstance 更简洁的解决方案。它避免创建运行时 thunk 并利用窗口句柄的实例内存。记忆存在的原因。

【讨论】:

  • 我已经更新了问题。让你的答案过时。
  • 我不认为有任何过时
猜你喜欢
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多