I want to do awaitable return from function
I've already tried to use GetAwaiter().GetResult() also i've tried move return from function higher and lower unreachable code. In case of lower i just get result after all computing. In case of higher the code lower marks as unreachable and does not work.
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;
}
}
how can i get the awaitable return from this function: _serviceResolver.FirstOrDefault(x => x.Value == service).Key; and keep doing try/catch and etc functional? thank you