我实际上是新手。我有一个简短的应用程序,只是为了检查应用程序是否可以从youtube异步获取身份验证并将应用程序返回到它的跟踪。以下是我的代码片段
private async void button1_Click(object sender, RoutedEventArgs e)
{
await YoutubeAuth();
MessageBox.Show(token);
}
private async Task YoutubeAuth()
{
OAUth2Credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets { ClientId = YoutubeClientId, ClientSecret = YoutubeClientSecret },
// This OAuth 2.0 access scope allows an application to upload files to the
// authenticated user's YouTube channel, but doesn't allow other types of access.
new[] { YouTubeService.Scope.YoutubeUpload },
"user",
CancellationToken.None
);
token = OAUth2Credential.Token.TokenType;
}
代码MessageBox.Show(token);
从未执行过。
修改
我尝试过其他更简单的代码,但仍然永远不会触发MessageBox
private async void button1_Click(object sender, RoutedEventArgs e)
{
await YoutubeAuth();
MessageBox.Show(token);
}
private async Task YoutubeAuth()
{
token = "test token";
}
答案 0 :(得分:1)
我的猜测是你创建了一个名为button1
的按钮,然后你编写了一个名为button1_Click
的方法,但你从未将这两个方法联系在一起。
在常见的.Net UI框架(Winforms,WPF)中,这不起作用,因为方法的名称实际上并不重要。重要的是按钮设置为在单击时调用方法。如何做到这一点取决于用户界面,但我相信双击设计器中的按钮应该创建一个方法,可以在你点击时调用。
答案 1 :(得分:0)
这看起来很有趣。我已经快速编写了WPF示例应用程序来验证
MainWindow.xaml
<Window x:Class="TestAsyncTaskToYoutube.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestAsyncTaskToYoutube"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button x:Name="button" Content="Button" />
</Grid>
</Window>
MainWindow.xaml.cs
using System.Threading.Tasks;
using System.Windows;
namespace TestAsyncTaskToYoutube
{
public partial class MainWindow : Window
{
private string token;
public MainWindow()
{
InitializeComponent();
button.Click += button_Click;
}
private async void button_Click(object sender, RoutedEventArgs e)
{
await YoutubeAuth();
MessageBox.Show(token);
}
private Task<int> YoutubeAuth()
{
token = "test token";
return Task.FromResult(0);
}
}
}
这里没问题。 MessageButton应该触发它。我确信你的代码与我的代码有点不同:|
我们如何帮助你?
编辑:避免Task.FromResult()(.NET 4.5功能)
private async Task YoutubeAuth()
{
token = "test token";
}