Предполагая, что это асинхронная операция, теоретически это может произойти в любом случае. Асинхронная операция должна выполняться в другом потоке, и , если завершается до возврата Load
, обратный вызов может быть вызван до завершения назначения.
На практике я бы ожидал, что асинхронный вызов займет намного дольше, чем домашняя работа Load
делает в конце метода - но я бы также не включил это предположение в код. Если нет явной синхронизации , чтобы гарантировать, что назначение происходит до обратного вызова, я не думаю, что это хорошая идея, чтобы полагаться на него.
Даже если в данный момент назначение всегда происходит первым, рассмотрим:
- Что произойдет, если в данный момент нет сетевого подключения? Асинхронный вызов может очень быстро завершиться неудачей.
- Что произойдет, если будет добавлено некоторое кэширование на стороне клиента? Звонок может быть выполнен очень быстро.
- Я не знаю, какое тестирование вы можете провести с помощью служб RIA, но иногда вы можете захотеть имитировать асинхронные вызовы, заставляя их выполнять обратный вызов в том же потоке - что означает обратный вызов может произойти в тестах до назначения. Этого можно избежать, форсировав подлинно асинхронный вызов, но обработка потоков в тестах может привести к ошибкам; иногда проще всего сделать все синхронно.
РЕДАКТИРОВАТЬ: Я больше думал об этом и пытался выяснить причины моего внутреннего настроения, что вы не должны делать это предположение, даже если в реальности почти всегда все будет хорошо.
Опора на порядок действий противоречит духу асинхронности.
Вы (IMO) должны что-то отключить и быть готовыми к тому, что оно может вернуться в любое время Вот как вы должны думать об этом. Как только вы начнете спускаться по скользкому склону «Я уверен, что смогу просто выполнить небольшую работу до того, как ответ будет получен», вы окажетесь в мире неопределенности.