-2
Akavache의 BlobCache.InMemory.GetOrCreateObject
을 사용하여 데이터베이스 테이블 중 하나에 캐싱을 추가하려고합니다. 비동기식으로 호출하면 모든 것이 정상입니다. 그러나 비동기 이후뿐만 아니라 비동기 및 변경할 수있는 많은 장소가 변경하려면 호출자가 필요합니다, 그래서 이것은 교착 상태의 원인이됩니다 Akavache를 동 기적으로 호출하면 교착 상태가 발생합니다.
public async Task<List<T>> GetAllDataAsync() => await BlobCache.InMemory.GetOrCreateObject(...);
public List<T> GetAllData() => GetAllDataAsync().Result;
아래에 뭔가를 수행하여 동 기적으로 대신
BlobCache.InMemory.GetOrCreateObject
전화를 선택. 나는 무엇을 잘못 했는가?
EDIT1
:이 코드는
'.Result'를 사용하여 교착 상태와 관련하여 수백 가지 질문이 있습니다. 검색을 해봤습니까? 일반적인 해결책은'GetAllDataAsync(). GetAwaiter(). GetResult()'를 사용하는 것입니다. 그러나 이것은'SynchronizationContext'에도 달려 있지만,이 곳의 정보를 추가하지 않았습니다. –
Observables로 모든 것을 비동기로 수행하거나 모든 작업을 수행하면 훨씬 행복한 시간을 가질 수 있습니다. –