Как запустить код в главном потоке после асинхронного

Omar Martinez спросил: 07 октября 2018 в 10:40 в: c#

У меня есть код, который будет выполняться только в основном потоке, но прежде чем этот код сможет работать, мне нужно инициализировать объект. В любом случае я могу заставить асинхронный код выполнять синхронизацию? Функции после ожидания - это вызовы API, и поэтому я не могу изменить их напрямую.

    public partial class MainWindow : Window
    {
        private MustBeInit mbi;        public MainWindow() {
            InitializeComponent();
            // async code that initializes mbi
            InitMbi(); 
            // mbi must be done at this point
            SomeCodeThatUsesMbi();
        }        public async void InitMbi() {
            mbi = new MustBeInit();
            await mbi.DoSomethingAsync();
            await mbi.DoSomethingElseAsync();            // is there any way i can run these two methods as not await and
            // run them synchronous?
        }        public void SomeCodeThatUsesMbi() {
            DoSomethingWithMbi(mbi); // mbi cannot be null here
        }
    }

0 ответов