Ich habe eine Asynchron-Methode in einem tragbaren Klassenbibliothek mit dieser Signatur:Konvertieren asynchronen Lambda-Ausdruck in Delegate-Typ System.Func <T>?
private async Task<T> _Fetch<T>(Uri uri)
Es eine Ressource abruft, die als konkreten T. zurückgeworfen wird
ich mit einer 3rd-Party-Cache arbeiten Bibliothek (Akavache), die ein Func<T>
als einer der Parameter und haben versucht, so erfordert auf diese Weise zu tun:
await this.CacheProvider.GetOrCreateObject<T>(key,
async() => await _Fetch<T>(uri), cacheExpiry);
Dies führt im Fehler:
Cannot convert async lambda expression to delegate type '
System.Func<T>
'. An async lambda expression may returnvoid
,Task
orTask<T>
, none of which are convertible to 'System.Func<T>
'.
ich verschiedene Permutationen von Func<T>
Zuordnung ohne Erfolg versucht haben, die einzige Möglichkeit, den Code an die Arbeit bekommen kann, ist die Func<T>
Blockierung zu machen:
await this.CacheProvider.GetOrCreateObject<T>(key,
() => _Fetch<T>(uri).Result, cacheExpiry);
, die meine app Deadlocks.
Irgendwelche Hinweise darauf, wo ich in die Irre gehe?
Sie suchen nach 'Func' –