C# 异步等待调用不返回

C# 异步等待调用不返回,c#,asynchronous,async-await,akavache,C#,Asynchronous,Async Await,Akavache,我有一个问题,我调用了一个异步方法,但调用没有返回。我认为这是一场线程竞赛。我如何正确地写这个 这就是它的起点。我首先调用一个名为“GetCachedValuesAsync”的异步方法 下面是GetCachedValueAsync的方法签名 public async Task GetCachedValuesAsync() { try { clips = await BlobCache.LocalMachine.GetObject&

我有一个问题,我调用了一个异步方法,但调用没有返回。我认为这是一场线程竞赛。我如何正确地写这个

这就是它的起点。我首先调用一个名为“GetCachedValuesAsync”的异步方法

下面是GetCachedValueAsync的方法签名

public async Task  GetCachedValuesAsync()
    {
        try
        {
            clips = await BlobCache.LocalMachine.GetObject<List<Clip>>("clips");
        }
        catch (KeyNotFoundException ex)
        {
            clips = new List<Clip>();
        }
    }

您需要从
任务中删除sync方法。按如下方式运行

public void OnNavigatingTo(NavigationParameters parameters)
{
    Task.Run(async () =>
    {
        await GetCachedValuesAsync();
    });

    ClipRefernce = GenerateRefernce(clips);
}

public async Task  GetCachedValuesAsync()
{
    try
    {
        clips = await BlobCache.LocalMachine.GetObject<List<Clip>>("clips");
    }
    catch (KeyNotFoundException ex)
    {
        clips = new List<Clip>();
    }
}
public void on导航到(导航参数)
{
Task.Run(异步()=>
{
等待GetCachedValuesAsync();
});
clipreference=发电机效率(剪辑);
}
公共异步任务GetCachedValuesAsync()
{
尝试
{
clips=await BlobCache.LocalMachine.GetObject(“clips”);
}
捕获(KeyNotFoundException ex)
{
clips=新列表();
}
}

你有什么例外吗?@Amit:我没有例外exception@Amit当前位置我已经做了这些更改。但这并不能解决问题,这可能会有所帮助。虽然这些问题听起来完全是同一个问题,但我在页面中尝试了这两种解决方案,但如果没有任何解释,就无法奏效,这并没有太大的帮助。我不知道GenerateReference
有什么作用,我完全不知道为什么会有帮助。这似乎是一个幸运的猜测,除非你想详细说明为什么会有帮助?@JonSkeet,我添加了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;
    }
public void OnNavigatingTo(NavigationParameters parameters)
{
    Task.Run(async () =>
    {
        await GetCachedValuesAsync();
    });

    ClipRefernce = GenerateRefernce(clips);
}

public async Task  GetCachedValuesAsync()
{
    try
    {
        clips = await BlobCache.LocalMachine.GetObject<List<Clip>>("clips");
    }
    catch (KeyNotFoundException ex)
    {
        clips = new List<Clip>();
    }
}