Помогите уяснить.
Есть такой код:
private bool DoSomething()
{
if (abc) return false;
Dispatcher.BeginInvoke(async () => { await MyMethodAsync(); });
return true;
}
Вопрос 1- выполнится ли return true; сразу же, или будет ждать MyMethodAsync ?
Это не мой код, разбираюсь в чужом.
По моим соображениям, всё что внутри Dispatcher.BeginInvoke() выполнится "когда-то, не сразу, т.к. суть этого метода - асинхронное выполнение в ui потоке именно этого диспетчера".
И значит, return true; выполнится сразу же.
Из доки:
Dispatcher.BeginInvoke Method
Executes a delegate asynchronously on the thread the Dispatcher is associated with.
Соответственно,
вопрос 2 - есть ли смысл писать await внутри BeginInvoke, если далее нет кода, завязанного на окончание (результат) MyMethodAsync() ?
Вроде очевидно, но вдруг я чё-то не догоняю.