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通訊軟件

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM