簡體   English   中英

等待從函數返回后無法訪問的代碼

[英]Unreachable code after await return from function

我想從函數中等待返回

我已經嘗試過使用GetAwaiter()。GetResult(),而且我也嘗試過從函數更高和更低的不可達代碼中移回返回值。 在較低的情況下,我只是在所有計算后得到結果。 如果代碼較高,則將較低的代碼標記為無法訪問且無法正常工作。

 public async Task<Guid?> Start(IServiceProvider serviceProvider, FileDTO[] files, Guid? guidOfCurrentService)
    {
        var serviceRepository = serviceProvider.GetService<IServiceRepository>();
        if (!serviceRepository.CheckService(guidOfCurrentService))
        {
            if (guidOfCurrentService == null)
            {
                guidOfCurrentService = Guid.NewGuid();
            }
            var service = serviceProvider.GetService<ICompressingService>();
            serviceRepository.StartService(guidOfCurrentService);
            _serviceResolver.Add(guidOfCurrentService, service);
            return _serviceResolver.FirstOrDefault(x => x.Value == service).Key;
            try
            {
                await Task.Run(() => service.CompressFiles(files));
            }
            catch
            {
                serviceRepository.EndService(guidOfCurrentService);
                return null;
            }
            serviceRepository.EndService(guidOfCurrentService);
        }
        else
        {
            return null;
        }
    }

我怎么能從這個函數得到等待的回報:_serviceResolver.FirstOrDefault(x => x.Value == service).Key; 並繼續嘗試/捕獲等功能? 謝謝

return始終意味着函數的結束。 我建議將調用結果存儲到_serviceResolver...並在try-catch-block之后將其返回,如下所示:

var _result = _serviceResolver.FirstOrDefault(x => x.Value == service).Key;
try
{
    await Task.Run(() => service.CompressFiles(files));
}
catch
{
    serviceRepository.EndService(guidOfCurrentService);
    return null;
}
serviceRepository.EndService(guidOfCurrentService);
return _result;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM