我有一个问题,我调用了一个异步方法,并且调用没有返回。我认为它是线程竞赛。我该如何正确地写这个?
这是它开始的地方。我首先调用一个名为“GetCachedValuesAsync”的异步方法
public void OnNavigatingTo(NavigationParameters parameters)
{
Task.Run(async () =>
{
await GetCachedValuesAsync();
ClipRefernce = GenerateRefernce(clips);
});
}
这是 GetCachedValueAsync 的方法签名
public async Task GetCachedValuesAsync()
{
try
{
clips = await BlobCache.LocalMachine.GetObject<List<Clip>>("clips");
}
catch (KeyNotFoundException ex)
{
clips = new List<Clip>();
}
}
我没有收到从 BlobCache 返回的调用,BlobCahce 方法是名为 akavache 的库的一部分。
代码也没有命中:ClipRefernce = GenerateRefernce(clips);
我感谢您的帮助
编辑 1
这是 GenerateReference 方法。
public string GenerateRefernce(List<Clip> clips)
{
string refernce = "";
if(clips.Count > 0)
{
var clip = clips.LastOrDefault();
refernce = String.Format("Ref {0:yyyy}/{1}",DateTime.Now , clip.ClipId + 1);
}
else{
refernce = String.Format("Ref {0:yyyy}/{1}", DateTime.Now, 1);
}
return refernce;
}