异步方法 'anonymous' 不应该 return void
Asynchronous method 'anonymous' should not return void
谁能帮我解决这个问题我什么都试过了。
我通常知道如何解决该问题,但不知道如何使用匿名方法。
DelegateCommand 有 2 个构造函数。
1) public DelegateCommand (Action executeMethod)
2) public DelegateCommand (Action executeMethod, Func canExecute).
我想知道是否有可能删除该警告。需要异步和等待,否则我的方法:enterButtonClicked();将被同步调用。
...
public DelegateCommand EnterButton { get; set; }
public StartPageViewModel()
{
Title = "title_black.png";
PasswordPlaceholder = "Lozinka";
EnterButton = new DelegateCommand( async () => { await enterButtonClicked();}); // <----- I am getting that warning here
}
public async Task enterButtonClicked()
{
}
...
async await 只与 Func<Task>
或 Func<Task<T>>
兼容,如果你没有那个,那么你有什么被认为是你不应该做的 "Async void"。
你的两个选择是不等待任务
...
public DelegateCommand EnterButton { get; set; }
public StartPageViewModel()
{
Title = "title_black.png";
PasswordPlaceholder = "Lozinka";
EnterButton = new DelegateCommand( () => { var temp = enterButtonClicked();});
}
public async Task enterButtonClicked()
{
}
...
这意味着 enterButtonClicked 引发的任何异常都不会被注意到
或者使用更好的支持异步函数的委托命令。我个人喜欢 Nito.Mvvm.Async NuGet package written by Stephen Cleary.
中的 AsyncCommand
...
public AsyncCommand EnterButton { get; set; }
public StartPageViewModel()
{
Title = "title_black.png";
PasswordPlaceholder = "Lozinka";
EnterButton = new DelegateCommand(enterButtonClicked); //you can just use a delegate, no method needed.
}
public async Task enterButtonClicked()
{
}
...
当任务 运行 时,AsyncCommand
委托将 CanExecute
设置为 false,这样除非操作完成,否则用户不能重复单击。
谁能帮我解决这个问题我什么都试过了。 我通常知道如何解决该问题,但不知道如何使用匿名方法。 DelegateCommand 有 2 个构造函数。
1) public DelegateCommand (Action executeMethod)
2) public DelegateCommand (Action executeMethod, Func canExecute).
我想知道是否有可能删除该警告。需要异步和等待,否则我的方法:enterButtonClicked();将被同步调用。
...
public DelegateCommand EnterButton { get; set; }
public StartPageViewModel()
{
Title = "title_black.png";
PasswordPlaceholder = "Lozinka";
EnterButton = new DelegateCommand( async () => { await enterButtonClicked();}); // <----- I am getting that warning here
}
public async Task enterButtonClicked()
{
}
...
async await 只与 Func<Task>
或 Func<Task<T>>
兼容,如果你没有那个,那么你有什么被认为是你不应该做的 "Async void"。
你的两个选择是不等待任务
...
public DelegateCommand EnterButton { get; set; }
public StartPageViewModel()
{
Title = "title_black.png";
PasswordPlaceholder = "Lozinka";
EnterButton = new DelegateCommand( () => { var temp = enterButtonClicked();});
}
public async Task enterButtonClicked()
{
}
...
这意味着 enterButtonClicked 引发的任何异常都不会被注意到
或者使用更好的支持异步函数的委托命令。我个人喜欢 Nito.Mvvm.Async NuGet package written by Stephen Cleary.
中的 AsyncCommand...
public AsyncCommand EnterButton { get; set; }
public StartPageViewModel()
{
Title = "title_black.png";
PasswordPlaceholder = "Lozinka";
EnterButton = new DelegateCommand(enterButtonClicked); //you can just use a delegate, no method needed.
}
public async Task enterButtonClicked()
{
}
...
当任务 运行 时,AsyncCommand
委托将 CanExecute
设置为 false,这样除非操作完成,否则用户不能重复单击。