我一直在 xamarin 中为“kernal/io/serailport”java jar 使用绑定项目。构建过程将“serial_port.so”作为共享对象库。调用 serial_port.so 中存在的函数的 C# 代码行如下:-
// This line calls java serialport class present in serial_port.so library refrenced in android project.
serialPort = new Kernal.io.SerialPort(device, Baudrate, 0);
现在,有趣的是,应用程序运行良好,但是当我在 android 项目中包含“sqlite-net-pcl”以进行 sqlite db 访问时,它给出了下面提到的异常:-
Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lkernal/io/serialport Unhandled Exception
仅当我在 android 项目 xamarin 中添加“sqlite-net-pcl”库时才会出现此错误。
我想这个问题与线程有关。如果“sqlite-net-pcl”不包含在android项目中,则绑定项目中的c#代码调用方法会在主线程中正常执行,因此不会引发异常并且应用程序工作正常,但是,当“sqlite-net-pcl “在android项目中添加,我认为sqlite pcl库中的某些东西会在另一个线程中调用绑定项目方法,因此引发了上述异常。
现在,我的问题是如何让 c# 代码调用绑定项目方法在主线程中运行,或者我可以让 slqite-net-pcl 库在不推荐的主线程上运行。
如果我的猜测是错误的,那么引发异常的原因可能是什么,我该如何解决。
谢谢