Учитывая следующий код:
public void CacheData()
{
Task.Run((Action)CacheExternalData);
Task.Run(() => CacheExternalData());
Task.Run(CacheExternalDataTask);
Task.Run(CacheExternalData);
}
public Task CacheExternalDataTask()
{
// Long running code
return Task.FromResult("Data");
}
public void CacheExternalData()
{
// Long running code
}
Почему Task.Run(CacheExternalData) неоднозначен? А Task.Run(CacheExternalDataTask) нет?
При вызове Task.Run с CacheExternalData я бы подумал, что компилятору было ясно, что метод не возвращает Task и он должен решить Action?