ITPub博客

首页 > IT职业 > IT职场 > C# 搞桌面UI适配国产麒麟Linux+龙芯遇到的一些坑

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

IT职场 作者:jxegg 时间:2021-09-09 08:52:52 0 删除 编辑

由于一些国企有国产化的需求,所以搞了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通讯软件

图片描述

图片描述

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1009/viewspace-2797196/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Linux常用命令
请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    84
  • 访问量
    846