我应该为我的IMDB API库中的开发人员提供同步或异步方法吗?

时间:2009-11-02 21:34:57

标签: c# .net webclient asynchronous

我将创建一个DLL库,让开发人员可以搜索和访问IMDB电影页面。

我应该如何处理GUI中的冻结,我应该使用异步方法,还是应该允许开发人员手动创建使用我们的DLL的线程?

3 个答案:

答案 0 :(得分:3)

这完全取决于你。

话虽如此,我认为提供异步和同步API会使您的库更像框架库,这将为您的用户提供正确使用它的最佳机会。

例如,WebClient提供DownloadFileDownloadFileAsync。我个人会在我的API中模仿这种行为。如果异步实现库,则很容易将其包装在同步API中。

答案 1 :(得分:1)

这是对你的判断。但是请考虑一下:

  1. 如果您只是以同步方式展示,则用户始终可以使用BackgroundWorker来避免阻止。

  2. 如果您认为可以在操作期间提供一些中间数据(如进度百分比),则异步版本可能会有用。

答案 2 :(得分:0)

我会避免在这样的库中进行异步调用。

如果图书馆的用户不关心阻止怎么办?如果它是应该阻止的命令行脚本怎么办?

应用程序的线程化是一项重大的设计决策,避免为它们做出决定。

我首先实现阻塞,同步调用以及稍后添加异步方法,以使库更容易用于线程害羞的程序员。