MSDN 说:
“ServiceMain 函数应该创建一个全局事件,对该事件调用 RegisterWaitForSingleObject 函数,然后退出。这将终止正在运行 ServiceMain 函数的线程,但不会终止服务......”
那么问题是:应该在ServiceMain函数内部创建一个新线程来执行服务代码,或者我可以简单地将服务设置为RUNNING状态并使用ServiceMain线程来运行服务代码?如果ServiceMain线程用于运行服务代码,SCM将保持锁定状态,即使服务状态设置为RUNNING?
我正在为泛型类型开发一个缓存,并且有一个疑问,我应该缓存值类型,例如int,struct等.缓存通常用于存储昂贵的对象,并且值类型的创建非常便宜.将可以插入缓存中的项限制为引用类型将使代码更容易实现.允许缓存只存储引用类型是个好主意?
考虑从缓存中删除valur类型的原因是:缓存可以通过委托自动加载值,并且该委托永远不应返回null.由于值类型无法与null进行比较,因此defaut(T)可能是有效的值类型.如何检查用户提供的委托是否返回有效值(假设未引发异常)?