Я использую Binding Project в xamarin для java jar "kernal/io/serailport". Процесс сборки предоставляет "serial_port.so" в качестве общей библиотеки объектов. Строка кода C#, вызывающая функции, представленные в serial_port.so, выглядит так:
// This line calls java serialport class present in serial_port.so library refrenced in android project.
serialPort = new Kernal.io.SerialPort(device, Baudrate, 0);
Теперь самое интересное, что приложение работает хорошо, но когда я включаю «sqlite-net-pcl» в проект Android для доступа к базе данных sqlite, это дает исключение, упомянутое ниже: -
Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lkernal/io/serialport Unhandled Exception
Эта ошибка возникает только тогда, когда я добавляю библиотеку sqlite-net-pcl в проект Android xamarin.
Я предполагаю, что проблема связана с потоками. Если «sqlite-net-pcl» не включен в проект Android, тогда метод вызова кода С# в проекте привязки обычно выполняется в основном потоке, из-за чего исключение не возникает, и приложение работает нормально, но когда «sqlite-net-pcl " добавлен в проект Android, я думаю, что какая-то вещь в библиотеке sqlite pcl вызывает вызов метода связывания проекта в другом потоке, из-за которого возникает вышеупомянутое исключение.
Теперь мой вопрос заключается в том, как я могу заставить код С#, вызывающий метод связывания проекта, запускаться в основном потоке, или я могу заставить библиотеку slqite-net-pcl работать в основном потоке, что не рекомендуется.
Если моя догадка неверна, то что может быть причиной возбуждения исключения и как с этим справиться.
Спасибо.