gpt4 book ai didi

C++ setTimeout函数?

转载 作者:行者123 更新时间:2023-11-30 01:31:49 25 4
gpt4 key购买 nike

像 C++ 中的 setTimeout 函数这样的 JavaScript 最便宜的方法是什么?

我需要这个:5000 毫秒后,启动函数 xy(无参数,无返回值)。

这样做的原因是我需要为文本到语音初始化 COM,但是当我在 dll 附加上执行此操作时,它崩溃了。

但如果我不从 dllmain 调用 CoInitialize,它工作正常。

我只需要调用 CoInitialize 和 CoCreateInstance,然后在其他函数中使用该实例即可。我可以通过检查 NULL 来捕获未初始化的实例,但我需要初始化 COM - 不会崩溃。

最佳答案

DllMain() 调用 CoInitialize() 是一件坏事; DllMain() 中的操作有很多限制;看这里:http://blogs.msdn.com/larryosterman/archive/2004/04/23/118979.aspx

即使它确实可靠地工作,然后从 DllMain() 中初始化 COM 也不是一件特别好的事情,因为 COM 是按线程初始化的,而且您不知道应用程序本身想要什么关于要为其初始化 COM 的线程的 COM 单元,这意味着您可能以一种方式初始化 COM,然后应用程序可能需要以另一种方式初始化它,并且可能因为您的 DLL 而失败做了...

您可以在 DllMain() 中启动一个线程,只要您小心(参见此处 http://blogs.msdn.com/oldnewthing/archive/2007/09/04/4731478.aspx ),然后在该线程上初始化 COM 并在该线程上执行所有与 COM 相关的工作.您需要将您需要使用 COM 的任何数据从您调用的任何线程编码到您自己的 COM 线程,并从那里进行 COM 调用...

然后是您创建的 COM 对象的实例(您能否可靠地做您想做的事)的问题是否可以从调用您的 DLL 进行调用的线程中使用...您是否了解在需要时如何编码接口(interface)指针等?

或者,您应该通过 COM 公开您的功能,然后让应用程序将您的 DLL 作为 COM DLL 加载,一切都会正常工作。您可以指定所需的公寓类型,该应用程序负责为您正确设置。

因此,总而言之,您不需要问题的答案。

关于C++ setTimeout函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2674649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com