C# 在youtube上异步搜索视频#
我是YouTube数据API和C#的新手。我想搜索视频并将结果显示到listview中,我确实这样做了,但无法异步执行。我找了很多,试了很多,但结果一无所获 请帮帮我。大多数Web服务API(尤其是ful API)都不提供异步方式来检索结果,因为一般来说,它们试图保持无状态:我相信Youtube API也不例外 相反,您需要依靠传统方法来模拟异步请求,例如以下方法之一:C# 在youtube上异步搜索视频#,c#,asynchronous,youtube-api,C#,Asynchronous,Youtube Api,我是YouTube数据API和C#的新手。我想搜索视频并将结果显示到listview中,我确实这样做了,但无法异步执行。我找了很多,试了很多,但结果一无所获 请帮帮我。大多数Web服务API(尤其是ful API)都不提供异步方式来检索结果,因为一般来说,它们试图保持无状态:我相信Youtube API也不例外 相反,您需要依靠传统方法来模拟异步请求,例如以下方法之一: 进行较小的分页请求,只在用户滚动搜索结果时发出请求,而您已经没有结果可显示了。这意味着在每个请求上要做的工作更少,您的UI
- 进行较小的分页请求,只在用户滚动搜索结果时发出请求,而您已经没有结果可显示了。这意味着在每个请求上要做的工作更少,您的UI锁定的可能性也更小
- 即使这样做,您也可能希望使用专用线程来获取结果并将其反馈给负责更新UI的线程。这将确保无论服务器的延迟如何,UI都能保持响应
- 或者,使用基于事件的框架(实现的框架)发出请求。在这样的框架下,您发出一个请求并得到一个带有结果的回调,允许您同时做其他事情。在这个模型下,您可以权衡互斥体保护共享数据(线程时使用)的需要和回调模型(可以说)增加的复杂性
- 进行较小的分页请求,只在用户滚动搜索结果时发出请求,而您已经没有结果可显示了。这意味着在每个请求上要做的工作更少,您的UI锁定的可能性也更小
- 即使这样做,您也可能希望使用专用线程来获取结果并将其反馈给负责更新UI的线程。这将确保无论服务器的延迟如何,UI都能保持响应
- 或者,使用基于事件的框架(实现的框架)发出请求。在这样的框架下,您发出一个请求并得到一个带有结果的回调,允许您同时做其他事情。在这个模型下,您可以权衡互斥体保护共享数据(线程时使用)的需要和回调模型(可以说)增加的复杂性
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
私人委托YouTubeAPI(然后看看这是否对您帮助更大,因为BackgroundWorkers可以进行回调。然后您所要做的就是设置一个后台工作程序,然后将您的更新函数挂接到已完成的事件中。您不能使用异步委托在异步调用中包装任何非异步方法吗?我的参考资料如下
好的,那么你的异步调用是这样的吗
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
private delegate YouTubeAPI(看看这是否对你有更多帮助,因为BackgroundWorkers可以进行回调。然后你所要做的就是设置一个后台工作程序,然后将更新函数挂接到已完成的事件中。我使用了它,但操作仍然滞后于应用:(.我使用了它,但操作仍然滞后于应用程序:(.异步是什么意思?对于客户端是异步的还是对于服务器是异步的?这是两件完全不同的事情。也就是说,您是在尝试为用户提供更快速/更流畅的应用程序体验,还是在尝试节约服务器资源?异步是什么意思?对于关于客户端还是关于服务器的异步?这是两件完全不同的事情。也就是说,您是在尝试为用户提供更快捷/更流畅的应用程序体验,还是在尝试节约服务器资源?