Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在youtube上异步搜索视频#_C#_Asynchronous_Youtube Api - Fatal编程技术网

C# 在youtube上异步搜索视频#

C# 在youtube上异步搜索视频#,c#,asynchronous,youtube-api,C#,Asynchronous,Youtube Api,我是YouTube数据API和C#的新手。我想搜索视频并将结果显示到listview中,我确实这样做了,但无法异步执行。我找了很多,试了很多,但结果一无所获 请帮帮我。大多数Web服务API(尤其是ful API)都不提供异步方式来检索结果,因为一般来说,它们试图保持无状态:我相信Youtube API也不例外 相反,您需要依靠传统方法来模拟异步请求,例如以下方法之一: 进行较小的分页请求,只在用户滚动搜索结果时发出请求,而您已经没有结果可显示了。这意味着在每个请求上要做的工作更少,您的UI

我是YouTube数据API和C#的新手。我想搜索视频并将结果显示到listview中,我确实这样做了,但无法异步执行。我找了很多,试了很多,但结果一无所获

请帮帮我。

大多数Web服务API(尤其是ful API)都不提供异步方式来检索结果,因为一般来说,它们试图保持无状态:我相信Youtube API也不例外

相反,您需要依靠传统方法来模拟异步请求,例如以下方法之一:

  • 进行较小的分页请求,只在用户滚动搜索结果时发出请求,而您已经没有结果可显示了。这意味着在每个请求上要做的工作更少,您的UI锁定的可能性也更小
  • 即使这样做,您也可能希望使用专用线程来获取结果并将其反馈给负责更新UI的线程。这将确保无论服务器的延迟如何,UI都能保持响应
  • 或者,使用基于事件的框架(实现的框架)发出请求。在这样的框架下,您发出一个请求并得到一个带有结果的回调,允许您同时做其他事情。在这个模型下,您可以权衡互斥体保护共享数据(线程时使用)的需要和回调模型(可以说)增加的复杂性
[编辑:对于.NET,我看到了]

YouTube在这方面没有什么特别之处:当从大多数API获取大型结果集时,您可能会使用相同的技术。

大多数Web服务API(尤其是全功能API)不提供异步方式来检索结果,因为一般来说,它们试图保持无状态:我相信YouTube API也不例外

相反,您需要依靠传统方法来模拟异步请求,例如以下方法之一:

  • 进行较小的分页请求,只在用户滚动搜索结果时发出请求,而您已经没有结果可显示了。这意味着在每个请求上要做的工作更少,您的UI锁定的可能性也更小
  • 即使这样做,您也可能希望使用专用线程来获取结果并将其反馈给负责更新UI的线程。这将确保无论服务器的延迟如何,UI都能保持响应
  • 或者,使用基于事件的框架(实现的框架)发出请求。在这样的框架下,您发出一个请求并得到一个带有结果的回调,允许您同时做其他事情。在这个模型下,您可以权衡互斥体保护共享数据(线程时使用)的需要和回调模型(可以说)增加的复杂性
[编辑:对于.NET,我看到了]


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可以进行回调。然后你所要做的就是设置一个后台工作程序,然后将更新函数挂接到已完成的事件中。

我使用了它,但操作仍然滞后于应用:(.我使用了它,但操作仍然滞后于应用程序:(.异步是什么意思?对于客户端是异步的还是对于服务器是异步的?这是两件完全不同的事情。也就是说,您是在尝试为用户提供更快速/更流畅的应用程序体验,还是在尝试节约服务器资源?异步是什么意思?对于关于客户端还是关于服务器的异步?这是两件完全不同的事情。也就是说,您是在尝试为用户提供更快捷/更流畅的应用程序体验,还是在尝试节约服务器资源?