كيف يمكنني تحديث واجهة المستخدم عندما يكون قابلاً للملاحظة. context غير متوفر؟

StackOverflow https://stackoverflow.com/questions/1957438

  •  21-09-2019
  •  | 
  •  

سؤال

لديّ تطبيق WinFrom ، وأستخدم طريقة متزامنة لتنزيل السلسلة من عنوان URL ، واستخدام طريقة RX TOASYNC لجعله غير متزامن والحصول على النتيجة الملحوظة ، وعندما تأتي النتيجة ، أعرضها على النموذج.

بالأمس ، قمت بتحديث RX إلى أحدث إصدار ، وقيل لي إن "الملاحظة لا تحتوي على تعريف للسياق". لقد حاولت التعليق على هذا السطر ، وألقت الرموز استثناءً بأن "عملية التقاطع غير صالحة: التحكم في" TBX_REFERENCE "تم الوصول إليه من مؤشر ترابط آخر غير مؤشر الترابط الذي تم إنشاؤه عليه."

أريد أن أظهر النتيجة غير المتزامنة باستخدام طريقة الاشتراك. كيف يمكنني حل هذه المشكلة؟ شكرا جزيلا.

public static IObservable<TResult> DoWorkAsync(TParameter parameter,
        Func<TParameter,TResult> actionSync)
    {
        Observable.Context = SynchronizationContext.Current;

        Func<TParameter, IObservable<TResult>> ActionAsync =  actionSync.ToAsync();

        IObservable<TResult> results = from result in ActionAsync(parameter)
                                       select result;

        return results;
    }
هل كانت مفيدة؟

المحلول

لبيان العودة ، جرب:

return results.ObserveOnDispatcher();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top