C# 搞桌面UI适配国产麒麟Linux+龙芯遇到的一些坑

Posted DSkin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 搞桌面UI适配国产麒麟Linux+龙芯遇到的一些坑相关的知识,希望对你有一定的参考价值。

由于一些国企有国产化的需求,所以搞了C#适配银河麒麟,适配了X64和龙芯MIPS版本

1、 在银河麒麟的龙芯版本中 pipe2 不能使用,x64版本上却可以用。  

pipe2 用来做自定义消息的,搞UI是需要主线程消息循环,另外还需要自定义消息来实现跨线程来操作UI,就是Winform和WPF里的Invoke和BeginInvoke,其他线程发送自定义消息到主线程,主线程接收之后,就执行相应的UI操作。如果用XSendEvent来实现,延迟很严重。后来参考Mono里的实现,把pipe2改成用Socket就行了。

 

2、在银河麒麟的龙芯版本中出现任务栏图标闪烁,无限激活获取焦点,x64版本却没问题。其实就是FocusIn 消息里,如果再调用XRaiseWindow(Display, Handle);XSetInputFocus(Display, Handle, 0, IntPtr.Zero);就会出现这种死循环。后来加个判断就好了。

 

3、这次是银河麒麟的x64版本的文件浏览对话框不稳定,对话框是调用Gtk来实现的,只能重写个文件对话框了,不依赖GTK的。

 

运行效果,CPF做的IM通讯软件

 

 

以上是关于C# 搞桌面UI适配国产麒麟Linux+龙芯遇到的一些坑的主要内容,如果未能解决你的问题,请参考以下文章

C# 实现 Linux 视频会议(源码,支持信创环境,银河麒麟,统信UOS)

虚拟机安装中标麒麟桌面版7.0系统 + 升级Firefox浏览器

虚拟机安装中标麒麟桌面版7.0系统 + 升级Firefox浏览器

国产麒麟操作系统调用PageOffice在线编辑保存WPS文档

国产化系列银河麒麟系统(龙芯3A4000)上docker安装指南

国产操作系统应用在哪些地方呢?