2014-12-01 3 views
-1

Я реализующий интерфейсC# Задача не Задача

Task Something() 

, но ни один из кодов в реализации не является асинхронной

Task Something(){ 
    var x=1; 
    return null; 
} 

Это приводит, конечно, приводит к ошибке при вызове:

await Something() 

Как отправить пустую задачу, чтобы сделать интерфейс счастливым?

ответ

6

Чтобы вернуть завершенную задачу, вы можете использовать Task.FromResult.

Task Something() 
{ 
    var x=1; 
    // Do *something* here ;) 
    return Task.FromResult(true); 
} 

Обратите внимание, что это будет работать синхронно, а не быть асинхронной операцией, так что было бы хорошо, чтобы документ, который соответствующим образом, а также.

0

Если ожидается асинхронный запрос, почему бы не сделать его асинхронным?

Task Something() 
{ 
    return Task.Run(() => { /* your code here */ }); 
} 
0

Для того, чтобы ждать какой-либо метод, он должен иметь асинхронной подпись так, чтобы ждать чего-то() это должно быть сделано, как:

async Task Something() 
{ 
    //do stuff 
} 

Просто помните, что если вы хотите, чтобы вернуться значение, которое вы должны вернуть Задачу, и если вы хотите вернуть пустоту, вы должны вернуть только задание

+0

Не нужно маркировать async, чтобы подождать - async - это деталь реализации. Ему нужно только вернуть что-то, например Task, которое ожидает. –