我是代码的初学者,我花了几个小时搜索我的问题的解决方案。
我正在使用一个Silverlight应用程序,它可以使用不同的Web服务,我用异步方法调用它们(我别无选择,因为我使用的是Silverlight),目标是等待返回我的方法然后继续执行申请书。
这是我的方法的外观(它们位于名为Services
的静态类中):
private static Task<ObservableCollection<Demande_GetNb_Result>> DemandeGetNbAsync()
{
TaskCompletionSource<ObservableCollection<Demande_GetNb_Result>> tcs = new TaskCompletionSource<ObservableCollection<Demande_GetNb_Result>>();
ABClient aBClient = new ABClient();
aBClient.Demande_GetNbCompleted += (sender, e) =>
{
if (e.Error != null)
tcs.TrySetException(e.Error);
else if (e.Cancelled)
tcs.TrySetCanceled();
else
tcs.TrySetResult(e.Result);
};
aBClient.Demande_GetNbAsync(((App)Application.Current).User.IdUser, true, true, true, (int)Constantes.Statut.Is_Waiting);
return tcs.Task;
}
public static async Task StartFamille()
{
ListInfos = await DemandeGetNbAsync(); // ListInfos is a Static variable on my Services class
}
我在其他类中调用此方法,如下所示:
var result = Services.StartFamille();
我想等到结果有价值才继续执行,但它不起作用,我找不到我理解的简单解决方案。继续执行而不等待将值分配给结果。
答案 0 :(得分:2)
您的方法返回Task
。尝试添加await运算符。
var result = await Services.StartFamille();
此外,DemandeGetNbAsync方法应返回ObservableCollection<Demande_GetNb_Result>
类型的变量,并使用await运算符。