C# 如何创建在MessagingCenter中运行的方法。订阅异步方法?
我有这段代码,但它失败了,因为它希望我的方法是异步的:C# 如何创建在MessagingCenter中运行的方法。订阅异步方法?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我有这段代码,但它失败了,因为它希望我的方法是异步的: MessagingCenter.Subscribe<CardsViewModel, ParamViewModel>(this, "CardBtn", (s, cmdParams) => { if (Counts.phaseTableSelectedCardCount != 0) { var canContinue = await DisplayAlert("Selector", "Chang
MessagingCenter.Subscribe<CardsViewModel, ParamViewModel>(this, "CardBtn", (s, cmdParams) =>
{
if (Counts.phaseTableSelectedCardCount != 0)
{
var canContinue = await DisplayAlert("Selector", "Changing this will remove all previously selected cards from the deck", "OK", "Cancel");
if (canContinue == false)
return;
}
var settingId = vm.SetButtons(cmdParams);
detailsLayout.Children.Clear();
IsBusy = true;
Change.cardSelection = true;
await Task.Run(() => UpdateSettingsAndGetData(settingId));
AddDetailSection();
IsBusy = false;
});
MessagingCenter.Subscribe(此“CardBtn”,(s,cmdParams)=>
{
如果(Counts.phaseTableSelectedCardCount!=0)
{
var canContinue=等待显示警报(“选择器”,“更改此选项将从牌组中删除所有先前选择的牌”,“确定”,“取消”);
如果(canContinue==false)
返回;
}
var settingId=vm.SetButtons(cmdParams);
detailsLayout.Children.Clear();
IsBusy=true;
Change.cardSelection=true;
等待任务。运行(()=>UpdateSettingsAndGetData(settingId));
AddDetailSection();
IsBusy=false;
});
有没有一种方法可以将async添加到其中?如果有,我需要在哪里添加它 当然,只需在参数之前添加async关键字
MessagingCenter.Subscribe<CardsViewModel, ParamViewModel>(this, "CardBtn", async (s, cmdParams) => ...
MessagingCenter.Subscribe(此“CardBtn”,异步,cmdParams)=>。。。
请注意我是如何在“CardBtn”之后添加async
关键字的,
。请记住lambda只是一个内联方法。您只需在此处声明一个方法签名,而不需要一些东西
我看到您正在设置
IsBusy
布尔值,我认为它会更新UI。请注意,您可能需要设备。BeginInvokeMainThread
才能访问UI线程,因为消息传递发生在后台线程上。当然,只需在参数之前添加async关键字即可
MessagingCenter.Subscribe<CardsViewModel, ParamViewModel>(this, "CardBtn", async (s, cmdParams) => ...
MessagingCenter.Subscribe(此“CardBtn”,异步,cmdParams)=>。。。
请注意我是如何在“CardBtn”之后添加async
关键字的,
。请记住lambda只是一个内联方法。您只需在此处声明一个方法签名,而不需要一些东西
我看到您正在设置
IsBusy
布尔值,我认为它会更新UI。请注意,您可能需要Device.beginInvokeMainThread
才能访问UI线程,因为消息传递发生在后台线程上。谢谢。关于IsBusy,这不是这个问题的一部分,因此我可能稍后会添加另一个问题。Thanks.关于IsBusy,这不是这个问题的一部分,所以我以后可能会再补充一个问题。