[英]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.