我有针对Button.xaml的XAML:
<Frame xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:t="clr-namespace:Japanese.Templates"
xmlns:local="clr-namespace:Japanese;assembly=Japanese"
x:Class="Japanese.Templates.Button" x:Name="this"
VerticalOptions="FillAndExpand"
HeightRequest="{DynamicResource GridButtonHeight}" >
<Frame.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand, Source={x:Reference this}}"
CommandParameter="{Binding ., Source={x:Reference this}}" />
<TapGestureRecognizer Tapped="ChangeTheColours" />
</Frame.GestureRecognizers>
<Label Text="{Binding Text, Source={x:Reference this}}" x:Name="ButtonLabel" />
</Frame>
以及我的Button.xaml.cs应用程序中的此C#
private async void ChangeTheColours(Object sender, EventArgs e)
{
try
{
if (this.ButtonLabel.Text != null && (string)this.ButtonLabel.Text.Substring(0, 1) != " ")
{
ConfigureColors((Button)sender, "C");
await Task.Delay(200);
ConfigureColors((Button)sender, State);
}
}
catch (Exception ex)
{
Crashes.TrackError(ex,
new Dictionary<string, string> {
{"ChangeTheColours", "Exception"},
{"Device Model", DeviceInfo.Model },
});
}
}
在此示例中,可以为异步方法返回void吗?还是有要求我应返回Task的要求?
答案 0 :(得分:2)
由于这是一个事件,因此无法将其转换为Task
。
当您检查Microsoft Docs时:
事件是使对象或类提供通知的成员。客户端可以通过提供事件处理程序来附加事件的可执行代码。
使用event_declarations声明事件
当您阅读最后一条声明时,它会说:
每个访问器对应于一个方法,该方法具有事件类型的单个值参数,无效返回类型以及与包含事件相同的修饰符。