我是YouTube Data API和C#的新手。我想搜索視頻並將結果顯示到列表視圖中,但我做到了,但我無法異步執行此操作。我搜索並嘗試了很多,但沒有結果。異步搜索Youtube視頻C#
http://google-gdata.googlecode.com/svn/docs/folder48/Multithreadedoperations.html
請幫助我。
我是YouTube Data API和C#的新手。我想搜索視頻並將結果顯示到列表視圖中,但我做到了,但我無法異步執行此操作。我搜索並嘗試了很多,但沒有結果。異步搜索Youtube視頻C#
http://google-gdata.googlecode.com/svn/docs/folder48/Multithreadedoperations.html
請幫助我。
大多數WebService API(尤其是REST ful)不提供異步方式來檢索結果,因爲通常他們會嘗試保持無狀態:我相信Youtube API也不例外。
相反,你將需要在傳統的方法瘦模擬異步請求,以下等爲一體:
[編輯:爲.NET我看到might not be such a good candidate for the reactor based approach]
沒有什麼特別之處的YouTube在這方面的:從最API的讀取大型結果集時可能會採用相同的技術。
不能在異步調用中使用異步委託包裝任何非異步方法嗎?我的參考是這個link。
確定這樣做了,你讓你的異步調用這樣的事情...
private delegate <returnType> YouTubeAPI(<args>)
private YouTubeAPI func;
private IAsyncResult ticket;
void YouTubeSearchFunc(string what)
{
func = <whatever the you tube call is>
ticket = func.BeginInvoke(<args needed>);
// WE MUST do this in order to return flow of control to program
return;
}
// later we need to check if the ticket is done and then get it
if (ticket.IsComplete == true)
// get it
else
// continue on like normal
我們不能只是立即獲得價值的原因是因爲這將阻止該程序。這正是我們不想做的。相反,我們必須以某種方式構建程序,以便檢查它是否在單獨更新中完成。這可以讓Win-forms或GTK運行,使其看起來不像掛起。不幸的是,這是一個令人頭疼的問題。你可能想要做的只是使用後臺工作者。閱讀這部分HERE,看看這是否對你沒有幫助,因爲BackgroundWorkers可以有回調。然後,您只需設置一個後臺工作人員,然後將更新函數掛接到完成的事件中。
我用它,但操作仍滯後的應用程序:(。 –
你是什麼意思的異步?與客戶端異步或與服務器異步?這是兩個完全不同的東西。也就是說,你是想爲用戶製作一個更快捷/更時尚的應用體驗,還是試圖節省服務器資源? – Eilon