以异步方式编写类或只是异步调用它

时间:2013-07-30 20:44:21

标签: c# .net asynchronous backgroundworker

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

此课程:

  1. 应该用一些参数构建,
  2. 它应该通过调用方法
  3. 来运行操作
  4. 应报告其进度,并报告操作结束。
  5. 之前我使用过BackgroundWorker但我对ThreadTask没有任何直接经验,我需要使用.NET 3.5,所以没有{{1} } - async

    一种方法是将班级与await结合起来。因此,用户将BackgroundWorker传递给该类,该类将引发BackgroundWorker个事件。但我不确定它是不是很好的设计。

    另一种方法是创建类,以便它有自己的事件用于进度更改,进度结束等。 BackgroundWorker将位于所谓的 bootstrapper 中,BackgroundWorker s事件将连接到类'事件。但这似乎是一种不必要的抽象层次。

    设计这类课程的常用方法是什么。将它编写为 异步 类是否更好,或者以正常方式编写它并将其称为 异步< / EM>

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

1 个答案:

答案 0 :(得分:4)

答案是,“这取决于。”

如果代码中没有任何内容要求它使用多个线程或异步操作,那么您应该将其写为普通方法(或类)。这样,您可以同步测试它,甚至可以在简单程序中同步使用它。您选择从BackgroundWorkerTask或其他方式调用它应该无关紧要。

始终以最简单的方式做事,并且仍然符合设计目标。如果该类所做的事情本质上不是异步的,那么不要强迫它。