gpt4 book ai didi

c# - 以异步方式编写类或仅异步调用它

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:00 25 4
gpt4 key购买 nike

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

这个类:

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

我以前使用过BackgroundWorker,但我没有任何直接使用ThreadTask的经验,我需要使用.NET 3.5 所以没有 async-await

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

另一种方法是创建类,这样它就会有自己的进度变化、进度结束等事件。 BackgroundWorker 将位于所谓的 bootstrapper 中,并且 BackgroundWorker 的事件将连接到类的事件。但这似乎是一个不必要的抽象级别。

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

总结:在评论中,MikeCorcoran 对问题进行了漂亮的总结;我想知道“是编写类以便它在每个方法中自动异步完成其工作,还是编写类使其同步工作但设计为在后台线程上运行。

最佳答案

答案是,“视情况而定。”

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

始终以最简单的方式做事,并且仍然满足设计目标。如果类所做的并非本质上是异步的,则不要强制它是异步的。

关于c# - 以异步方式编写类或仅异步调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com