我想创建一个代表长时间运行的类。
此课程:
之前我使用过BackgroundWorker
但我对Thread
或Task
没有任何直接经验,我需要使用.NET 3.5,所以没有{{1} } - async
一种方法是将班级与await
结合起来。因此,用户将BackgroundWorker
传递给该类,该类将引发BackgroundWorker
个事件。但我不确定它是不是很好的设计。
另一种方法是创建类,以便它有自己的事件用于进度更改,进度结束等。 BackgroundWorker
将位于所谓的 bootstrapper 中,BackgroundWorker
s事件将连接到类'事件。但这似乎是一种不必要的抽象层次。
设计这类课程的常用方法是什么。将它编写为 异步 类是否更好,或者以正常方式编写它并将其称为 异步< / EM>
摘要:在评论中,MikeCorcoran总结了这个问题;我想知道“是否要编写类,以便它在每个方法中自动异步工作,或编写类使其同步工作但设计为在后台线程上运行。”
答案 0 :(得分:4)
答案是,“这取决于。”
如果代码中没有任何内容要求它使用多个线程或异步操作,那么您应该将其写为普通方法(或类)。这样,您可以同步测试它,甚至可以在简单程序中同步使用它。您选择从BackgroundWorker
或Task
或其他方式调用它应该无关紧要。
始终以最简单的方式做事,并且仍然符合设计目标。如果该类所做的事情本质上不是异步的,那么不要强迫它。