2013-06-03 1 views
0

Я хотел бы использовать this solution для синхронного ожидания операции async.Приложение для Windows Store - синхронно ожидает асинхронной операции

public static ConfiguredTaskAwaitable<T> StartAsTask<T> (
    this IAsyncOperation<T> self, bool continueOnContext) 
{ 
    if (self == null) 
     throw new ArgumentNullException("self"); 

    self.AsTask().ConfigureAwait(continueOnContext); 
} 

Когда я называю этот метод, я получаю сообщение об ошибке «Windows.Foundation.IAsyncAction» не содержит определение для «StartAsTask» и нет методы расширения.

await FileIO.WriteTextAsync(sampleFile, sampleString).StartAsTask (false); 

Может ли кто-нибудь дать мне какие-либо указания?

+0

Синхронное ожидание операции 'async' явно означает, что вы ***, а не ***; было бы гораздо лучше просто «подождать» результата. Повторите метод расширения - вы можете * попробовать * добавить 'Microsoft.Bcl.Async' (от nuget), но, честно говоря, я бы не удивился, если он не включен специально по той причине, что вы не должны делать что***. –

ответ

1

Это не решение для чего-либо синхронно, это просто, как избежать обратного вызова в поток пользовательского интерфейса, когда вам это не нужно. Проблема с вашим фактическим кодом заключается в том, что вы определили расширение для IAsyncOperation<T>, а не IAsyncAction.

Смежные вопросы