我正在尝试使用Winforms应用收集YouTube视频的数据。当我按下面所示调用YTSearch()
方法时,程序到达时会停止响应
var slResponse = await slRequest.ExecuteAsync();
请求已启动,但未停止,既未完成,也未触发try catch上的catch。我使用Discord.NET设法使用Discord bot完成同样的工作。在输出中是
抛出异常:Google.Apis.dll中的'Google.GoogleApiException' 抛出异常:mscorlib.dll中的“Google.GoogleApiException” 抛出异常:mscorlib.dll`中的'Google.GoogleApiException'
图书馆:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows.Forms;
using Google.Apis.YouTube.v3;
using Google.Apis.Services;
using System.Diagnostics;
方法:
public async Task<List<Video>> YTSearch(string query)
{
string ytAPI = APIKEY; // Ommitted
var ytService = new YouTubeService(new BaseClientService.Initializer()
{
ApiKey = ytAPI,
ApplicationName = "YouTubeDownloader"
});
var slRequest = ytService.Search.List("snipper");
slRequest.Q = query;
slRequest.MaxResults = 10;
var slResponse = await slRequest.ExecuteAsync();
List<Video> vidList = new List<Video>();
return vidList;
}
致电:
private void btnSearch_Click(object sender, EventArgs e)
{
List<Video> vidList = YTSearch(txtSearch.Text).Result;
}
答案 0 :(得分:0)
首先,你有一个小错字,你应该修复与你的错误无关。第一个参数是部件有效值
你有剪刀
不清楚这是问题所在,因为您所遇到的错误与API无关。
问题听起来更像是dll的问题。我会尝试重新导入nuget包,确保你在项目中使用.NET 4.5
答案 1 :(得分:0)
我没有对此进行测试,但我相当确定您需要使用lmtree()
。因此,在您的ConfigureAwait(false)
方法中,您需要使用以下行:
YTSearch
这是必需的,因为您使用var slResponse = await slRequest.ExecuteAsync().ConfigureAwait(false);
阻止了按钮处理程序中的结果。
This MSDN article有点旧,但解释了这个问题。