1. 程式人生 > >UI操作 解決方案

UI操作 解決方案

  1 #include <iostream>                                                                                                                                                                                                          
  2 #include <deque>                                                                                                                                                                                                             
  3 #include <mutex>                                                                                                                                                                                                             
  4 #include <future>                                                                                                                                                                                                            
  5 #include <thread>                                                                                                                                                                                                            
  6 #include <utility>                                                                                                                                                                                                           
  7                                                                                                                                                                                                                              
  8                                                                                                                                                                                                                              
  9 std::mutex m;                                                                                                                                                                                                                
 10 std::deque<std::packaged_task<void()> > tasks;                                                                                                                                                                               
 11                                                                                                                                                                                                                              
 12 bool gui_shutdown_message_received();                                                                                                                                                                                        
 13 void get_and_process_gui_message();                                                                                                                                                                                          
 14                                                                                                                                                                                                                              
 15 void gui_thread()                                                                                                                                                                                                            
 16 {                                                                                                                                                                                                                            
 17     while(!gui_shutdown_message_received())                                                                                                                                                                                  
 18     {                                                                                                                                                                                                                        
 19         get_and_process_gui_message();                                                                                                                                                                                       
 20         std::packaged_task<void()> task;                                                                                                                                                                                     
 21         {                                                                                                                                                                                                                    
 22             std::lock_guard<std::mutex> lk(m);                                                                                                                                                                               
 23             if(tasks.empty())                                                                                                                                                                                                
 24                 continue;                                                                                                                                                                                                    
 25                                                                                                                                                                                                                              
 26             task = std::move(tasks.front());                                                                                                                                                                                 
 27             tasks.pop_front();                                                                                                                                                                                               
 28         }                                                                                                                                                                                                                    
 29         task();                                                                                                                                                                                                              
 30     }                                                                                                                                                                                                                        
 31 }                                                                                                                                                                                                                            
 32                                                                                                                                                                                                                              
 33 std::thread gui_bg_thread(gui_thread);                                                                                                                                                                                       
 34                                                                                                                                                                                                                              
 35 template<typename Func>                                                                                                                                                                                                      
 36 std::future<void> post_task_for_gui_thread(Func f)                                                                                                                                                                           
 37 {                                                                                                                                                                                                                            
 38     std::packaged_task<void()> task(f);                                                                                                                                                                                      
 39     std::future<void> res = task.get_future();                                                                                                                                                                               
 40     std::lock_guard<std::mutex> lk(m);                                                                                                                                                                                       
 41     tasks.push_back(std::move(task));                                                                                                                                                                                        
 42     return res;                                                                                                                                                                                                              
 43 }                                                                                                                                                                                                                            
 44                                                                                                                                                                                                                              
 45                                                                                                                                                                                                                              
 46 int main(int argc,char** argv)                                                                                                                                                                                               
 47 {                                                                                                                                                                                                                            
 48     std::cout << "-------------------------------------------------------" << std::endl;                                                                                                                                     
 49                                                                                                                                                                                                                              
 50     return 0;                                                                                                                                                                                                                
 51 }                                                                                                                                                                                                                                                           
~            

相關推薦

UI操作 解決方案

1 #include <iostream>

一種新的自動化 UI 測試解決方案 Airtest Project

今天分享一個自動化UI測試工具airtest——一款網易出品的基於影象識別面向遊UI測試的工具,也支援原生Android App基於元素識別的UI自動化測試。主要包含了三部分:Airtest IDE、Airtest(用截圖寫指令碼)和 Poco(用介面UI元素來寫指令碼)。 來自google的評價:

集合迭代時候操作解決方案-ArrayList-Iterator-CopyOnWriteArrayList

1、集合在使用iterator迭代器,迭代集合的時候,不可以對集合類進行操作,否則會通過jdk java程式碼fail-fast(快速報錯機制)丟擲異常。 fail-fast(快速報錯機制)解釋(fail-fast機制它是Java集合的一種錯誤檢測機制): 集合的內部都維護

Asp.Net程序根目錄下文件夾操作導致Session失效的解決方案

rgs get bject process simple exce cep clas .net 1、配置web.config <system.web> <sessionState mode="StateServer" stateConnectio

Win10系統下軟件UI顯示不完整解決方案

key 解決 window 顯示不完整 行高 解決問題 存在 路徑 解決方案 方法摘錄如下 step1:打開註冊表 WIN+R,或者運行裏面輸入regedit step2:路徑[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

sql執行內部操作期間檢測到不一致性解決方案

服務 repair false 重啟 html -- 不一致 備註 操作 解決方法:重啟下SQL服務,把下面腳本運行即可。運行後,壞掉的數據庫可能會丟失。 --mydb 為壞了的數據庫名--mytable 為壞了的據庫表--master 這裏不需要更改 use mydb

關於win7裝不了ie8瀏覽器提示“此安裝不支持您的操作系統”解決方案

關於win7更新IE瀏覽器IE瀏覽器一直穩定發展,而且每隔一段時間久會推出新的版本,這不有用戶說win7裝不了ie8瀏覽器提示“此安裝不支持您的操作系統”,也不知道哪裏出現問題,針對此問題,下面小編和大家講解win7裝不了ie8瀏覽器提示“此安裝不支持您的操作系統”的解決方法。推薦:雨林木風win7旗艦版下載

idea操作mysql數據庫添加漢字時出現亂碼解決方案

http nco har 一個 技術分享 格式 出現 clas 操作mysql 首先 然後 最後 在連接數據庫後面加一個指定編碼格式 編碼格式: characterEncoding=UTF-8    idea操作mysql數據庫添加漢字時出現亂碼解決方案

SSH連接linux時,長時間不操作就斷開的解決方案(增強版)

正常 每分鐘 指定 防止 variable 當前 實現 客戶 不發送 1、第一次嘗試失敗 修改/etc/ssh/sshd_config文件, 找到 ClientAliveInterval 0 ClientAliveCountMax 3 並將註釋符號("#")去掉, 將Cli

獲取硬碟資訊失敗 請謹慎操作解決方案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

受限操作的變通解決方案

各個資料庫系統中提供的修改表結構的方法是不同的,有的提供了修改表名、修改欄位型別、修改欄位名稱等操作的SQL語句,而有的則沒有提供這些功能,甚至有的資料庫系統連刪除欄位的功能都不支援。但是這些操作有的時候又是必要的,那麼有沒有變通的手段來實現這些功能呢?答案是有! 在DB2中如果要在表T中刪除一個欄位F1,

每隔幾秒查詢資料庫,操作頻繁,導致控制檯報錯too many connection,解決方案連線池

原因:傳統的增刪改查已經滿足不了對資料庫的頻繁操作了; 解決方案:資料庫連線池-DBCP連線池 資料庫連線池-DBCP連線池 所需的jar包:  配置檔案: dbcpconfig.properties 這個檔案需要放在src的根目錄下面,和其他的包是同一個級別

執行緒間操作無效: 從不是建立控制元件“XXX”的執行緒訪問它 [Winform]執行緒間操作無效,從不是建立控制元件的執行緒訪問它的幾個解決方案,async和await?

方法1  Invoke((MethodInvoker)(()=>{XXX.Text = message;}));   方法2 取消跨執行緒檢查 Control.CheckForIllegalCrossThreadCalls = false;  

Mybatis 3.4.4 升級到3.4.5+版本導致讀寫操作的時候使用不同的TypeHandler的解決方案

專案背景 專案中因需要保留時區資訊, 前後臺互動採用時間格式為標準ISO8601格式時間, 例如: 2018-11-11T11:48:23.168+08:00, 資料庫使用VARCHAR儲存. 某日, 系統寫入資料依然正常, 但是系統查詢突然全部拋異常: Caused by: java.time.form

關於JedisCluster不支援Pipeline操作解決方案

一、背景 業務需要,把redis單結點改為叢集,在對程式碼進行測試的時候發現了,原本使用jedis的批量操作pipeline,到了叢集的時候不可用了。報了org.springframework.data.redis.connection.jedis.JedisClusterConnectio

popupwindow 鍵盤遮擋部分ui解決方案

在popupwindow裡面拿到activity activity.getWindow().setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED); activity.getWindow().setSoftInputMode(WindowManager

vue-router 在微信瀏覽器中操作history URl未改變的解決方案

問題描述: 在PC端和手機瀏覽器中router.replace() or router.push()能夠正常使用,頁面的地址和頁面都正常顯示;但是在微信中,從/a頁面通過router.push('/b')跳轉到/b頁面後,頁面正常,但是複製瀏覽器的地址會發現其地址仍為/a;

EasyBCD誤操作導致Win7系統出錯的解決方案

誤操作會導致計算機開機啟動不了作業系統,顯示狀態為0xc0000098。 解決方法: 計算機開啟後先進入BLOS,設定為U盤啟動優先(此時的U盤已經做好的系統啟動盤,用大白菜製作) 接著重啟計算機,連續按C鍵 如果是GRUB4DOS的方式,會進入GRUB的命令列 "G

使用Eclipse生成可執行exe檔案的操作步驟&&FatJar無法安裝問題解決方案

剛剛從C++轉到Java,eclipse的操作用起來很彆扭。最麻煩的就是沒有可執行檔案了。每次都要開啟Eclipse啟動專案。所以就想著做個exe,也方便專案使用。 說做就做,網上百度了一下,大致分兩步。第一步是打成jar包,第二步就是把jar包打成exe檔案。 1 打包jar

eoLinker 上線兩週年+ AMS V4.0 釋出:全新 UI 介面,帶來領先的 API 開發管理解決方案

2018年7月,eoLinker 釋出了《eoLinker AMS 2018年年中使用者調研問卷》,前後經歷一週的時間,共收集到超過1000份有效調查問卷、超過300個有效改進意見。 eoLinker AMS中文版自2016年上線以來,能夠在短短兩年內快速發展成為中國最大的線上API管理