1. 程式人生 > >Delphi Dll執行緒使用Synchronize同步導致執行緒假死的解決方法

Delphi Dll執行緒使用Synchronize同步導致執行緒假死的解決方法

經試驗可以在dll工程檔案中加入以下語句 :

Application.Initialize;

if Application.Handle = 0 then
begin
    Application.CreateHandle;
end;

Application.Run;

解決執行緒中使用Synchronize 假死的問題,或者線上程中直接使用SendMessage替代Synchronize同步。

原因在於若工程檔案是DLL而不是EXE的話,Application預設不建立視窗控制代碼,因此Synchronize向Application傳送訊息根本無法響應,手動建立控制代碼,並讓其進入訊息迴圈狀態可以解決


相關推薦

Delphi Dll執行使用Synchronize同步導致執行解決方法

經試驗可以在dll工程檔案中加入以下語句 : Application.Initialize; if Application.Handle = 0 then begin     Application.CreateHandle; end; Application.Ru

執行(四)執行同步執行安全問題

關於執行緒安全問題,有一個經典的問題:銀行取錢的問題。銀行取錢的基本流程可以分為如下幾個步驟: 1、使用者輸入賬號、密碼,系統判斷使用者的賬戶、密碼是否匹配; 2、使用者輸入取款金額; 3、系統判斷賬

linux c 執行同步(通訊)的幾種方法--互斥鎖,條件變數,訊號量,讀寫鎖

轉載自:https://blog.csdn.net/vertor11/article/details/55657619Linux下提供了多種方式來處理執行緒同步,最常用的是互斥鎖、條件變數、訊號量和讀寫鎖。 下面是思維導圖: 一、互斥鎖(mutex)   鎖機制是同一時刻只允

Hibernate 註解序列生成主鍵執行完select seq_t_user.nextval後不執行insert等語句導致 執行save()或update()方法無效

hiberna 不能 nal 自動提交 ext 無效 pen mave ransac 題主解決方法: 1)在DAO中獲取session的時候采用sessionFactory.getCurrentSession();不用

執行中呼叫UpdateData(TRUE/FALSE)出現異常解決方法

       使用子執行緒去呼叫UpdateData(TRUE/FALSE)方法更新窗體控制元件值時,總是會彈出“Debug Assertion Failed”異常錯誤;        原因是:工作執行緒(子執行

頻繁開關執行pycharm程式,導致GPU被沾滿的解決辦法

本人頻繁在pycharm下run程式,經常終止,可能其後臺執行的Python程式沒有關閉,所以耗盡GPU資源。現象是佔用GPU的進場ID為空,即nvidia-smi後,沒有程序使用GPU,但每塊GPU的記憶體確被使用很多。。。。。 fuser -v /dev/nvidia* 會發現很多Pytho

面試題--三個執行迴圈列印ABC10次的幾種解決方法

使用sleep 使用synchronized, wait和notifyAll 使用Lock 和 Condition 使用Semaphore 使用AtomicInteger 下面依次給出每種解決方案的程式碼: 使用sleep Java程式碼 package my.thread.test;  

執行中生成隨機數序列重複問題的解決方法

使用過隨機數的程式設計師都知道在程式中並不能夠實現的真正的完全的隨機數函式。隨機數函式產生的是通過公式計算出來的一系列偽隨機數,這個公式會採用一個種子數計算出一個數,而該數將成為產生下一個數的種子數。基於產生隨機數的原理,兩次呼叫隨機數後產生的隨機數序列將是一樣的,顯然,這

執行操作UI控制元件——DataGridView現象

  在多執行緒程式設計中,如果你從非建立這個控制元件的執行緒中訪問這個控制元件或者操作這個控制元件的話就會丟擲這個異常。這是微軟為了保證執行緒安全以及提高程式碼的效率所做的改進,但是也給大家帶來很多不便

關於子執行裡不能更新UI操作的解決方法

如圖片所示,我在子執行緒裡寫了更新TextView的程式碼,提示有錯,大致意思就是在子執行緒裡不能更新UI,只能在主執行緒裡操作 百度了一下,解決方法如下: 用Activity物件的runOnUiThread方法更新在子執行緒中通過runOnUiThread()方法更新

關於.Net mvc 專案在本地vs執行響應時間過長無法訪問時,解決方法

  最近可能是剛升級了電腦使用了window10作業系統,總是遇到了一些以前沒有遇到過的事情! 今早來到公司本來準備寫bug的,但是當我開啟vs執行的時候發現今天的電腦響應的時間明顯的要比之前開啟網頁除錯的時間要長的多,到最後不但沒有開啟,而且還提示了一個這樣的問題! 如圖:    這就蛋

appium1.4版本,每次執行appium時需要安裝unlock,setting檔案的解決方法

在使用appium執行自動化指令碼時,首次執行指令碼時會在手機中安裝unlock,setting,inputmanager三個apk,以達到讓appium控制app的目的,但是執行完一次之後,在OPPO,vivo,以及其他一些手機上出現了這樣的情況,每次執行都需要安裝這三個apk,導致指令碼執行過程非常不流暢

Python 執行sql條件查詢語句速度很慢的解決方法

問題描述 今天寫程式碰到一個問題,程式剛開始執行的好好的,到了後面,資料庫中的檔案越來越多的時候,程式執行開始變慢,到了後來, 一條條件查詢語句,竟然要用一分鐘之久,要知道只有幾萬條資料(雖然資料內容很大) 解決方法 這個問題,困擾我好久,我之前一直在優化自

LR執行場景時,21種常見錯誤及解決方法

1、Error -27727: Step download timeout (120 seconds)has expired when downloading resource(s). Set the“Resource Page Timeout is a Wa

phpstudy執行時80埠和3306埠被佔用解決方法

80埠負責Apache執行 3306埠負責MySQL執行 當這兩個埠被佔用時,則不能執行程式 首先檢視什麼程式佔用埠,按住window+R,輸入cmd,點確定 進入cmd的介面,在輸入“netstat -ano” 再按回車鍵 找到埠以及對應的PID值 然後

電腦執行VirtualBox虛擬機器總是提示0x00000000錯誤的解決方法

最近有使用者發現在電腦中執行VirtualBox虛擬機器,總是提示0x00000000錯誤“0x00000000指令引用的0x00000000記憶體該記憶體不能為written,”,這是由於系統主題被破解,而VirtualBox會呼叫uxtheme.dll,才出現以上問題。對此不妨使用以下方法來解決

MyEclipse+Maven打可執行war包時遇到的一系列問題及解決方法詳解

以下是我整個打war包過程時遇到的一些問題以及我用到的解決方案,及時分享出來,給遇到同樣問題的小夥伴們予以借鑑,少走彎路。 先貼出來pom.xml中打war包需要的依賴 <build>

有關"mvn -version 'mvn' 不是內部或外部命令,也不是可執行的程式 或批處理檔案"的解決方法

下載安裝和配置好maven之後,在控制檯輸入"mvn -version "報"mvn -version 'mvn' 不是內部或外部命令,也不是可執行的程式 或批處理檔案"的錯誤。在網上找了幾個解決方法之後,得到了解決,在這裡記錄一下,以防以後遇到了還要花時間找。 在環境變數的系統變數中找到pat

Linux執行執行檔案提示No such file or directory的解決方法

最近在使用Linux作業系統執行一個可執行檔案,結果出現了No such file or directory的提示,表示很疑惑。 ./tshrf bash: ./tshref: No such file or directory 檢視檔案資訊,可以看到

bash檔案無法執行,提示沒有那個檔案或目錄的解決方法

現在在做Broadcom的BCM2157平臺,發給我們的平臺原始碼包裡只提供了一個patch,需要先從網上下載指定的Android原始碼,給的文件裡下載原始碼的部分所用的命令很多都不能使用了,不知道為什麼。按照常規的辦法下載裡指定的版本,在執行shell檔案打patch時結果報如下錯誤:  [email&#