我有一个动作定义为:
Action CurrentDxList;
最初,我将其用作:
private void test()
{
CurrentDxList = MakeAllDxList;
CurrentDxList();
}
哪里
private void MakeAllDxList()
{
var dx = MedicalClient.GetAllDx((int)Patient.Patient_Recid, Patient.tservice);
_dxlist = dx.OrderBy(o => o.Cdesc);
DxList = new ObservableCollection<DiagnosisDetail>(iDxDetail);
ListCount = DxList.Count();
}
但是,MakeAllDxList()最好用async定义为:
private async Task MakeAllDxList()
{
var dx = await MedicalClient.GetAllDxAsync((int)Patient.Patient_Recid, Patient.tservice);
_dxlist = dx.OrderBy(o => o.Cdesc);
DxList = new ObservableCollection<DiagnosisDetail>(iDxDetail);
ListCount = DxList.Count();
}
现在导致以下错误:
任务MakeAllDxList()的返回类型错误。
那么是否可以将等待项分配给某个动作?怎么做?任何想法都是最欢迎的。
当然,我可以将MakeAllDxList()的签名更改为
private async void MakeAllDxList()
但是那样我就会失去异步Task的所有优势。
最佳答案
您需要将Action
更改为Func<Task>
,这是新的类型定义。
附言不要忘记等待CurrentDxList
代表
private async Task test()
{
CurrentDxList = MakeAllDxList;
await CurrentDxList();
}
您还需要更新调用
test
的任何人,以使其也异步。