YouTube Data API と C# は初めてです。ビデオを検索して結果をリストビューに表示したいのですが、非同期で実行できません。私は検索して多くのことを試みましたが、何もありませんでした。
http://google-gdata.googlecode.com/svn/docs/folder48/Multithreadedoperations.html
私を助けてください。
YouTube Data API と C# は初めてです。ビデオを検索して結果をリストビューに表示したいのですが、非同期で実行できません。私は検索して多くのことを試みましたが、何もありませんでした。
http://google-gdata.googlecode.com/svn/docs/folder48/Multithreadedoperations.html
私を助けてください。
ほとんどの WebService API (特にREST ful のもの) は、結果を取得するための非同期の方法を提供しません。一般に、それらはステートレスのままでいようとするためです: Youtube API も例外ではないと思います。
代わりに、次のいずれかのような、非同期リクエストをシミュレートするための従来の方法に頼る必要があります。
[編集: .NETの場合、reactor ベースのアプローチには適していない可能性があります]
この点に関して、YouTube に特別なことは何もありません。ほとんどの API から大きな結果セットを取得するときに、同じ手法を使用できます。
非同期デリゲートを使用して、非同期呼び出しで非非同期メソッドをラップできませんか? 私の参照はこのリンクです。
わかりましたので、非同期呼び出しを次のようにしましたか...
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 フォームまたは GTK が実行され、ハングしたように見えなくなります。残念ながら、これはお尻の痛みです。おそらくやりたいことは、バックグラウンド ワーカーを使用することです。この部分をここで読んで、BackgroundWorkers がコールバックを持つことができるため、これが役に立たないかどうかを確認してください。あとは、バックグラウンド ワーカーをセットアップし、update 関数を completed イベントにフックするだけです。