我有一个高速渲染应用程序,我想输出日志消息到单独的窗口。该应用程序是多线程的,并且在任何给定时间,所有线程都可能有记录。日志消息到窗口,游戏应用程序
我已经在使用控制台输出,而且工作正常!
我所做的是:
- 创建的LogMessage队列
- 当一个线程有话要说,它锁定的队列,并插入其消息放入队列
- 有一个“刷新“线程睡觉,直到某些线程记录一些东西(在任何线程上调用
log()
唤醒刷新线程),其作业是将所有日志消息刷新到文件和控制台。
这对文件和控制台日志记录都正常工作:似乎都不关心他们正在接收打印调用的线程与应用程序的主线程不同。但是,any other window you create does care。所以现在当我尝试打印到我创建的separate RichText window时,冲洗线程不起作用。
所以这是令人失望的。现在唯一的解决方案是将刷新线程代码移动到主线程(与运行渲染循环的主线程相同),这意味着显示帧时可能存在很长的延迟(如果等待锁定日志队列所以他们可以输出),我不想要。