Согласно тестам, LostFocus запускается до события Clicked , однако, поскольку он асинхронный, есть вероятность, что Clicked обрабатывается до LostEvent закончено. Если вы хотите убедиться в порядке, вы можете использовать некоторые объекты синхронизации, такие как, например, асинхронная версия AutoResetEvent . Образец может выглядеть так:
AsyncAutoResetEvent resetEvent = new AsyncAutoResetEvent();
private async void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Starting lost focus");
await Task.Delay(3000);
resetEvent.Set();
Debug.WriteLine("Leaving lost focus");
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Clicking button");
await resetEvent.WaitAsync();
Debug.WriteLine("Finishing with click event");
}