我將製作一個DLL庫,它允許開發人員搜索和訪問IMDB電影頁面。我應該爲我的IMDB API庫中的開發人員提供同步還是異步方法?
我應該如何處理GUI中的凍結,我應該使用異步方法還是應該允許開發人員手動創建使用我們的DLL的線程?
我將製作一個DLL庫,它允許開發人員搜索和訪問IMDB電影頁面。我應該爲我的IMDB API庫中的開發人員提供同步還是異步方法?
我應該如何處理GUI中的凍結,我應該使用異步方法還是應該允許開發人員手動創建使用我們的DLL的線程?
這完全取決於你。這就是說,我認爲提供一個異步和同步API將使你的庫更像框架庫,這將給你的用戶正確使用它的最好機會。
例如,WebClient提供了DownloadFile和DownloadFileAsync。我個人會在我的API中模仿這種行爲。如果您異步實現庫,則很容易將其封裝在同步API中。
我會避免在這樣的庫內異步調用。
如果庫的用戶不關心阻塞會怎麼樣?如果它是一個命令行腳本,應該塊?
應用程序的線程是一個主要的設計決策,避免爲他們做出決定。
我會首先實現阻塞,同步調用,也許以後會添加異步方法,以使該庫更容易用於線程害羞的程序員。
這是一個判斷呼籲你的結束。但是考慮:
用戶可以隨時使用BackgroundWorker
避免阻塞,如果只是以同步的方式公開。
如果您認爲您可以在操作過程中提供一些中間數據(如進度百分比),那麼異步版本可能會有用。