У меня есть функция следующим образом:
public static async Task<bool> DoSomething()
{
await Task.Run(() =>
{
//do something that takes a long time
bool success = ALongFunction();
return success;
});
}
Приведенный выше код не компилируется, так как ожидает возврата значения после ожидания. Почему это? Код в задаче возвращает значение во всех путях выполнения, и я подумал, что возвращение этого после await должно обрабатываться механизмом await. Что я должен вернуть в вышеупомянутом? Должен ли я сделать что-то вроде этого:
public static async Task<bool> WriteMonitor(string filename, IMonitorAsync monitorAsync)
{
bool success = false;
await Task.Run(() =>
{
//do something that takes a long time
success = ALongFunction();
});
return success;
}
Выше компилируется, но я ожидал, что верхний код также скомпилируется.