.net MAUI Android синхронно вызывает StartActivityForResult и ждет вызова OnActivityResultC#

Место общения программистов C#
Anonymous
.net MAUI Android синхронно вызывает StartActivityForResult и ждет вызова OnActivityResult

Сообщение Anonymous »


из моего приложения мне нужно создать новое действие для внешнего приложения, чтобы получить результат в OnActivityResult. Он хорошо работает с StartActivityForResult, затем OnActivityResult вызывается после завершения обработки externalActivity... Таким образом, код вызывающего объекта уже завершен...

Поэтому я хотел бы вызвать родительский метод в моей модели представления, который выполняет код StartActivityForResult в контексте async/await, чтобы иметь линейный бизнес-код без использования обратного вызова в OnActivityResult...

На самом деле

публичный класс MyViewModel { общедоступный асинхронный OnCallExternalIntent() { androidService.CreateExternalIntent() => этот метод вызывает внутри StartActivityForResult, затем работающий поток покидает и вызывается StartActivityForResult. Работает.... } } Но я хотел бы выполнить метод CreateExternalIntent в контексте ожидания, чтобы получить StartActivityForResult вот так

публичный класс MyViewModel { общедоступный асинхронный OnCallExternalIntent() { варotherActivityResult = ждут androidService.CreateExternalIntent(); } } общедоступный класс MainActivity: MainApplication { публичная задача CreateNewActivity() { StartActivityForResult(planeteMonetiqueIntent, транзакция.InteropMessageId); AutoResetEvent.WaitOne(); return Task.FromResult(_otherActivityResult); } } защищенное переопределение void OnActivityResult(int requestCode, Result resultCode, Android.Content.Intent намерение) { Пакет Bundle = Intent.Extras; _otherActivityResult = GetDataFromBundle(); АвтоСбросСобытия.Установить(); } Я выполнил этот процесс для синхронизации с USB-устройством для получения процесса Arduino, и мой код вызывающего абонента работает хорошо с ожиданием...

Я видел эту тему Синхронный startActivityForResult — ожидание завершения действия

Я не могу использовать Инструментарий Инструментарий = новый Инструментарий(); Instrumentation.AddMonitor(planeteMonetiqueIntentFilter, null, false);

instrumentation.StartActivitySync(planeteMonetiqueIntent);

Этот код вызвал ошибку, невозможно выполнить этот код в основном потоке....

Я устал объяснять свою проблему как можно проще...

Спасибо.

Жюльен

Вернуться в «C#»