我想创建一个代表长时间运行的操作的类。
这节课:
- 应该用一些参数构造,
- 它应该通过调用方法来运行操作,
- 它应该报告它的进度并且它应该报告操作的结束。
我以前用过,但我对s 或sBackgroundWorker
没有任何直接经验,我需要使用 .NET 3.5 所以没有- 。Thread
Task
async
await
一种方法是将类与BackgroundWorker
. 因此,用户将 a 传递BackgroundWorker
给该类,该类将引发该BackgroundWorker
事件。但我不确定这是否是一个好的设计。
另一种方式是创建类,使其有自己的事件,用于进度更改、进度结束等。将BackgroundWorker
在所谓的引导程序中,并且BackgroundWorker
s 事件将连接到类的事件。但这似乎是不必要的抽象级别。
设计这些类的常用方法是什么。将其编写为一种异步类更好,还是以正常方式编写并异步调用它更好?
总结:在评论中,MikeCorcoran 很好地总结了这个问题;我想知道“是否编写类以便它在每个方法中自动异步执行其工作,或者编写类以便它同步工作但设计为在后台线程上运行。 ”