سؤال

أحاول استدعاء طريقة إف توليستاسينك.ولكن لم يحدث شيء-لا استثناء ، لا مهلة تشغيل فقط.

هذا هو رمز بلدي.

        private IQueryable<Place> placeCompleteQuery;
    protected IQueryable<Place> PlaceCompleteQuery
    {
        get
        {
            return this.placeCompleteQuery ?? (this.placeCompleteQuery = this.Context.Places.Include(p => p.Address).
                Include(p => p.CreatedBy).
                Include(p => p.Source).
                Include(p => p.Type.Translations).
                Include(p => p.Ratings));
        }
    }

    public async Task<IList<Place>> GetPlacesByLocationAsync(DbGeography location, int radius)
    {
        List<Place> temporaryResult = PlaceCompleteQuery.Where(p => p.Location.Distance(location) <= radius).
            ToList();

        return await PlaceCompleteQuery.Where(p => p.Location.Distance(location) <= radius).
            ToListAsync();
    }

أول مكالمة مزامنة لطريقة توليست ترجع النتيجة على الفور.المكالمة الثانية غير المتزامنة من توليستاسينك لا تزال تعمل مع أي نتيجة ولا استثناء.

أي اقتراحات?

هل كانت مفيدة؟

المحلول

وأظن أن مزيد من مكدس المكالمات الخاص بك ، التعليمات البرمجية الخاصة بك هو الدعوة Task.Wait أو Task<T>.Result.إذا قمت بذلك على مؤشر ترابط واجهة المستخدم أو من ASP.NET طلب السياق, التعليمات البرمجية الخاصة بك سوف الجمود, ، كما أشرح على مدونتي.

لإصلاحه ، استخدم await بدلا من Task.Wait أو Task<T>.Result.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top