gpt4 book ai didi

c# - 在库中使用多线程有哪些策略?

转载 作者:太空狗 更新时间:2023-10-30 01:26:17 24 4
gpt4 key购买 nike

我正在编写一个库来处理长时间运行的任务,例如文件下载和处理大量文本。我想对这个库进行多线程处理,这样这些任务就不会卡住使用它们的应用程序。

对于以结构化的方式或我应该使用/避免使用的特定类,您有什么建议吗?我正在考虑使用 IAsyncResult 接口(interface):http://msdn.microsoft.com/en-us/library/system.iasyncresult.aspx ,或者可能是一些 BackgroundWorker。

最佳答案

so that these tasks won't freeze up the applications that use them.

如果这是您的目标,您应该研究框架中的标准异步编程模式。

如果您的库以 .NET 4 为目标,让它返回 TaskTask<T> ,因为这将轻松过渡到下一版本的 C# 和 VB.NET 中的异步支持。这还有一个非常好的补充,允许同步使用,而无需您做任何额外的工作,因为用户总是可以这样做:

var result = foo.BarAsync().Result; // Getting Task<T>.Result blocks, effectively making this synchronous

如果您的目标是 .NET 3.5 或更早版本,您应该考虑使用 Event-based asynchronous pattern ,因为它在当前 API 中的使用比 APM 多。

关于c# - 在库中使用多线程有哪些策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5305665/

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