我将创建一个DLL库,让开发人员可以搜索和访问IMDB电影页面。
我应该如何处理GUI中的冻结,我应该使用异步方法,还是应该允许开发人员手动创建使用我们的DLL的线程?
答案 0 :(得分:3)
这完全取决于你。
话虽如此,我认为提供异步和同步API会使您的库更像框架库,这将为您的用户提供正确使用它的最佳机会。
例如,WebClient提供DownloadFile和DownloadFileAsync。我个人会在我的API中模仿这种行为。如果异步实现库,则很容易将其包装在同步API中。
答案 1 :(得分:1)
这是对你的判断。但是请考虑一下:
如果您只是以同步方式展示,则用户始终可以使用BackgroundWorker
来避免阻止。
如果您认为可以在操作期间提供一些中间数据(如进度百分比),则异步版本可能会有用。
答案 2 :(得分:0)
我会避免在这样的库中进行异步调用。
如果图书馆的用户不关心阻止怎么办?如果它是应该阻止的命令行脚本怎么办?
应用程序的线程化是一项重大的设计决策,避免为它们做出决定。
我首先实现阻塞,同步调用以及稍后添加异步方法,以使库更容易用于线程害羞的程序员。