我正在研究一个类库,其中一个类负责使用XDocument.Load(url)
从 Internet 检索 Xml 文件。鉴于此操作可能需要几秒钟才能完成,因此在它自己的线程上运行它是有意义的。
创建这个线程是谁的责任?检索文件的消费者或类?有没有关于这方面的最佳实践?
我正在研究一个类库,其中一个类负责使用XDocument.Load(url)
从 Internet 检索 Xml 文件。鉴于此操作可能需要几秒钟才能完成,因此在它自己的线程上运行它是有意义的。
创建这个线程是谁的责任?检索文件的消费者或类?有没有关于这方面的最佳实践?
最佳实践是实现异步模式。这意味着如果你的类有一个LoadXml
方法,你也实现了一个LoadXmlAsync
方法和某种OnCompleted
事件。
你可以在这里阅读
我认为这两种选择都很好。这还取决于您将使用此方法获取数据的位置。如果它在多个地方使用,那么在检索文件的类中安排线程是完全有意义的。
我个人会选择最后一个,因为如果我需要在更多地方(也许稍后)使用它,那会给我更大的灵活性。
在考虑这个问题时,我想到了前缀方法 BeginDoSomeOperation 和 EndDoSomeOperation ,这将给最后一个选项更多的功劳。