防止计时器进行垃圾回收
Prevent Timer from Garbage Collection
本文关键字:计时器 更新时间:2023-10-16
我在程序开始时启动一个计时器:
GetWorldTimerManager().SetTimer(MyTimerHandle, this, &AMyGameMode::SetNextMatchState, 1.0f, true, 0.0f);
MyTimerHandle是我的游戏模式中的一个私有变量。
这会每秒调用相应的函数,并检查游戏是否应该进入下一个状态。在我开始摧毁现场的演员之前,它工作得很好。从那时起,不再调用回调。我的销毁调用如下所示:
Destroy(Cast<AMyPlayerState>(gameState->PlayerArray[i])->MyUnitList.Pop());
所以我不会删除计时器。由于"Destroy(...("仅标记在不久的将来被GC销毁的actor,因此我假设GC也会删除我的计时器,这显然不是我的意图。
那么我怎样才能防止GC破坏我的计时器(假设这是原因,为什么计时器停止工作(?
您是否正在加载新地图?加载地图,旅行...
因为这会创建一个新的世界,它有自己的新计时器管理器,这将导致你的计时器被禁用。
在这种情况下,您应该使用游戏实例而不是世界中的计时器管理器
相关文章:
- Linux的Cpp上的计时器
- 提升 ASIO 无法识别计时器对象
- 提升 asio 并发计时器取消问题与链
- 使用单体计时器的pthread_cond_timedwait有时会比预期晚超时
- 窗口中的微秒计时器
- 计时器是否从另一个线程启动?
- 如何在 c++ 中创建计时器
- C++回调计时器实现
- 在计时器或主线程外部的命令上销毁/替换线程
- 如何制作每秒从 30 乘 1 倒计时的计时器?
- 保留计时器集合(对象与指针)的最佳方法
- 在网络套接字计时器滴答后增加asio短读错误
- 是否可以仅使用标准 c++/c++11 实现不带"sleep"的计时器?
- 在没有NtSetTimerResolution的Windows上提高计时器分辨率(高分辨率)
- 计时器坏了或者其他什么的
- 功能计时器阻止主功能继续
- IO服务重新启动后,Boost最后期限计时器持续触发
- boost asio计时器是否会在"取消"时阻塞
- Poco 计时器,具有来自同一类的回调
- 使计时器在C++进程中的特定时间关闭,以便同步两个进程