我正在WaitHandle
为负责在内部创建资源的对象公开一个接口,但这可能需要很长时间。合同如下所示:
public interface IHaveExpensiveResources {
WaitHandle FinishedInitialization { get; }
}
WaitHandle
开始未设置,但我在初始化完成后设置它(在后台,在构造函数返回后)。我不喜欢这个的事情是这个合同的消费者可以设置WaitHandle
自己,当他们没有业务能够做到这一点时。它让我想起了 get-onlyIList<T>
属性和IReadOnlyList<T>
.
C# 中是否有像 a 那样WaitOnlyWaitHandle
只公开WaitOne()
重载方法的东西?
所以我不是 XY 问题的受害者,是否有更规范的异步构造对象的方法来构建具有较长构造时间的对象?