Мауи - Net 8 => Отмена выбора Filepicker приводит к сбою приложения. фатальный сигнал 6 (SIGABRT), код -1 или фатальный C#

Место общения программистов C#
Ответить
Anonymous
 Мауи - Net 8 => Отмена выбора Filepicker приводит к сбою приложения. фатальный сигнал 6 (SIGABRT), код -1 или фатальный

Сообщение Anonymous »

Я использую maui для не очень сложного приложения для Android. Используя .net 8 и для устройства отладки, я использую устройство Huawei под управлением APK 29, а также Samsung Flip под управлением APK 34.
Также я должен упомянуть, что я использую шаблон mvvm и инструмент, который я использую для это набор инструментов сообщества.
  • Проблема:
Когда вы используете Filepicker чтобы выбрать файл (либо с помощью статического метода Filepicker.Default.PickAsync(), либо с помощью запроса как службы из конструктора.
Вот как я внедрил службу:
// Отредактировано Переход к синглтону

Код: Выделить всё

builder.Services.AddSingleton((e) => FilePicker.Default);
Когда я пытаюсь выбрать файл, все идет так, как должно. Но когда вы отменяете процесс выбора файла и возвращаетесь в приложение, приложение вылетает без каких-либо исключений и ничего. Я вижу ошибку либо как фатальный сигнал 6 (SIGABRT), код -1, либо как фатальный сигнал 11 (SIGSEGV), код 2 (SEGV_ACCERR). Я просмотрел эти ошибки, и они указывают на какие-то проблемы с адресом.
Я поделился выходной информацией 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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