关于线程,COM +和STA公寓的几个问题
我有一个Windows服务,它创建10个线程+创建任务列表的线程。
这11个线程中的每一个都通过调用CoInitialize(nil)进入STA。
任务列表由一个线程创建,其他获取项目,处理它并免费....
a)其他线程可以使用其他线程创建的对象吗?
(这似乎工作,但..)
b)其他线程可以释放另一个线程分配的内存吗?
(这似乎不起作用......)
我应该以某种方式封送线程之间的指针吗?
或者我应该至少获得该项目,处理它,但让它被释放是创建它的线程的“所有者”?
在我的Windows服务中,我创建了可用于启动/停止服务的功能(疑似并恢复线程)。
但是我遇到了实际收集数据并在间隔中执行的线程的问题。
当线程加载要处理的项目时,在它之后,它进入睡眠状态5分钟。
我怎样才能安全地终止这样的线程?如何中止睡眠状态?
在此先感谢您的帮助!
没有找到相关结果
已邀请:
2 个回复
屑凉赦
玩翁文醚碱
和
。 STA线程必须使用Windows消息来泵送消息,因为这是STA线程如何使用COM。即你必须调用GetMessage / TranslateMessage / DispatchMessage。可能您的框架有一个简单的消息泵功能,您可以使用它来执行此操作。 要中止5分钟的睡眠状态,请在较短的时间间隔内进行多次睡眠,并检查“shouldquit”标志。在Service Main中设置shouldquit标志。