1

我想创建一个代表长时间运行的操作的类

这节课:

  1. 应该用一些参数构造,
  2. 它应该通过调用方法来运行操作,
  3. 它应该报告它的进度并且它应该报告操作的结束。

我以前用过,但我对s 或sBackgroundWorker没有任何直接经验,我需要使用 .NET 3.5 所以没有- 。ThreadTaskasyncawait

一种方法是将类与BackgroundWorker. 因此,用户将 a 传递BackgroundWorker给该类,该类将引发该BackgroundWorker事件。但我不确定这是否是一个好的设计。

另一种方式是创建类,使其有自己的事件,用于进度更改、进度结束等。将BackgroundWorker在所谓的引导程序中,并且BackgroundWorkers 事件将连接到类的事件。但这似乎是不必要的抽象级别。

设计这些类的常用方法是什么。将其编写为一种异步类更好,还是以正常方式编写并异步调用它更好?

总结:在评论中,MikeCorcoran 很好地总结了这个问题;我想知道“是否编写类以便它在每个方法中自动异步执行其工作,或者编写类以便它同步工作但设计为在后台线程上运行。

4

1 回答 1

4

答案是“视情况而定”。

如果代码中没有什么要求它使用多线程或异步操作,那么你应该把它写成一个普通的方法(或类)。这样,您可以同步测试它,甚至可以在简单的程序中同步使用它。您选择从 aBackgroundWorker或 aTask或其他方式调用它应该无关紧要。

始终以最简单的方式做事,并且仍然满足设计目标。如果类所做的不是天生异步的,那么不要强迫它。

于 2013-07-30T20:58:33.340 回答