考虑以下代码:
using System.Threading;
public class BaseClass {
private Timer tmrWork;
public BaseClass() {
// read values from config
tmrWork = new Timer(tmrWork_Tick, null, 1, SomeInterval);
}
private void tmrWork_Tick(object state)
{
DoWork();
}
protected abstract void DoWork();
}
public class ChildClass: BaseClass {
public ChildClass() {
// do a bunch of stuff here
// potentially time consuming
}
protected override void DoWork() {
// do stuff
}
}
这里的意图是:基于配置值,从 BaseClass 继承的类将在某个点调用一个名为 DoWork 的方法。
因为该方法在单独的线程上被调用(由于使用 System.Threading.Timer),所以有时在 ChildClass 构造函数完成执行之前调用 DoWork。
在调用 DoWork 之前,如何确保子构造函数已完成?
PS 代码位于 Windows 服务中。