Также я должен упомянуть, что я использую шаблон mvvm и инструмент, который я использую для это набор инструментов сообщества.
- Проблема:
Вот как я внедрил службу:
// Отредактировано Переход к синглтону
Код: Выделить всё
builder.Services.AddSingleton((e) => FilePicker.Default);
Я поделился выходной информацией vs 2022 и лог-кодом телефона Huawei, когда произошла ошибка.
Я разработал часть ошибки журналы выделены жирным шрифтом. Надеюсь понятно.
Что я пытался исправить или найти причины ошибки:
- Я попытался обойти шаблон mvvm и вызвал filepicker.pickasync() внутри события нажатия кнопки, используя либо статический метод, либо внедренный сервис. Не повезло.
- Попробовал первый способ на нескольких разных страницах на случай, если при навигации возникнут проблемы. Нет!!
- Я попробовал mediapicker вместо FilePicker, чтобы проверить, не проблема ли в средстве выбора файлов. Неа! Mediapicker вызывает ту же проблему.
- Но если я создаю новый проект maui и использую средство выбора файлов или средство выбора мультимедиа либо в качестве статического метода, либо в качестве внедренной службы как для кода события щелчка, так и для команды шаблона mvvm нет никаких проблем. работает отлично.
Что вы думаете?
PS: извините за мое английский.
Изменить: как я вызываю средство выбора файлов
Код: Выделить всё
[RelayCommand]
private async Task OpenFile()
{
try
{
var result = await openFile.PickAsync(new PickOptions
{
PickerTitle = localization.GetLocalizationKeyValue("KmlKmzFilePickerTitle"),
FileTypes = new FilePickerFileType(new Dictionary
{
{DevicePlatform.Android, new []{ "application/vnd.google-earth.kml+xml", "application/vnd.google-earth.kmz", "text/plain" } }
})
});
}
catch (Exception e)
{
throw e;
}
}
Я пробовал работать на протекторе пользовательского интерфейса. Та же проблема. Также проверяется, выполняется ли код в основном потоке с помощью MainThread.IsMainThread . Да, код находится в основном потоке, также я ставлю точку останова, и приложение никогда не выходит из метода openFile.PickAsync(). Он даже не попадает в блок захвата. В методе openFile.PickAsync() приложение аварийно завершает работу и выдает выходные данные. Эти строки:
[m.andromeda.gi] Явное параллельное копирование GC освобождено 19037(1444КБ)
Объекты AllocSpace, 0(0B) объектов LOS, 38 % свободно, 37 МБ/61 МБ, пауза
151us всего 110,722 мс []
Утверждение на /__w/1/s/src/mono/mono/mini/interp/interp.c:2106,
условие `context->stack_pointer context-stack_end' не выполнено
[libc] Фатальный сигнал 6 (SIGABRT), код -1 (SI_QUEUE) в tid 26407 (m.andromeda.gis), pid 26407 (m.andromeda.gis)
Подробнее здесь: https://stackoverflow.com/questions/791 ... -6-sigabrt
Мобильная версия