-
這是執行緒之間的不同步問題。
新增乙個 afxmessagebox,相當於新增乙個等待時間,在等待過程中,系統會處理 ondatachange 訊息並執行 ondatachange() 函式。
方法一:如果在傳送觸發ondatachange事件的訊息時使用POST,則應使用SendMessage
方法 2: 你也可以在訊息框中新增乙個 sleep(30),但這不是乙個好的做法。
方法三:如果遇到類似的問題,也可以用cmutex來控制對某個變數的訪問,學習多執行緒程式設計後就會明白了。
你用方法2,sleep(30)或者sleep(50)就行了,最多也不過100個剩下的就很難說清楚了,去找這本關於win32 api程式設計的書吧。
你把**送過來,我幫你應得的。
-
我是提出這個問題的人。 還有乙個問題:與上述問題有一些聯絡。
carraym_data10array;
int idata;初始化為 0
然後,將生成的值新增到 ondatachenge 事件中的集合類中(假設該函式被呼叫 500 次)。
CSDATA 的型別為 cstring。
m_;呼叫函式後,呼叫func函式讀取集合類中的資料(也會被呼叫500次)。
int func(double* pvalue)
int i;
cstring str;
i = m_;
集合類中有 %d 條記錄,現在查詢 %d", i, idata);
afxmessagebox(str);
pvalue = m_;
idata++;
return 1;
就是這個想法,但出了點問題。 第一次呼叫 func 函式時,i = m; 為什麼生成的集合類中有 0 值? 然後執行到 m 會使程式崩潰(彈出乙個不尋常的對話方塊)。
但是,如果我單擊異常對話方塊中的“忽略”按鈕,程式將再次啟用,並且第一次返回的p值是正確的值。 為什麼?
主要問題是,i = m; 我怎麼能是 0?
快點,快點。
-
如果在同乙個執行緒中,你可以用sendmessage解決它(ondatachange我不知道它是否是自己引發的訊息? )
執行此操作的另一種方法是以與 message 相同的方式獲取值,因為訊息佇列已排隊,並且您將此類函式新增到頭檔案中。
lresult msgtogetvalue(wparam,lparam)
新增訊息對映。
onmessage(wm user+123,msgtogetvalue) wm user+123 可以隨意替換。
CPP 檔案,lresult msgtogetvalue(wparam, lparam)。
返回所有變數;
在 fun2 中,將返回全域性變數更改為:
int ret = ::sendmessage(wm_user+123,0,0);
return ret;
就是這樣,在 ondatachange 中獲取全域性變數。
-
讓我們看看你是否可以使用睡眠(以毫秒為單位的延遲)。 看看是否可以將 func2 訊息放入訊息佇列中。
-
不要在 dllmain 中建立執行緒,因為 dllmain 中的 ** 會重複執行。
你可以用乙個單獨的函式來啟動乙個執行緒,這裡是我寫的乙個dll,讓PC音箱每1秒響一次,你可以參考一下。
全域性變數。 bool api_nthreadflag = true;執行緒執行標誌。
dword __stdcall thread(lpvoid wparam);
bool apientry dllmain( handle hmodule,dword ul_reason_for_call,lpvoid lpreserved
return true;
_declspec(dllexport) void winapi startthread()
declspec(dllexport) void winapi endthread()
dword __stdcall thread(lpvoid wparam)
return 0;}
-
Microsoft說過,不要建立執行緒......在 dllmain
-
儲存 BeginThreadEx 和 CreateThread 返回的控制代碼,可以使用 getthreadtimes 函式獲取執行緒的建立時間,減去後會立即出來,通知子執行緒的末尾或使用 terminatethread 強制結束。
控制機制必須由自己編寫,VC 自帶的庫沒有封裝此功能。
-
您將睡眠新增到子執行緒中以減慢速度。
要準確觸發,請使用 gettickcount()確定上次時間與當前時間的差值是否大於固定時間間隔。
-
這是乙個優先事項。 優先順序越高,時間片就越多。
後台的任務基本就是所謂的後台段主幹優先順序,系統可以設定是優先後台還是前台,一般給前台優先,後台的東西不會對前台的效能產生任何影響。 還有比較慷慨的程式是閒置優先,也就是說,只有在系統發呆的時候,它們才會發呆,不會影響你正常做事的能力。
但無論如何,時間分片的問題是不可避免的,如果想要更準確地確定時間或某些語句的執行時間等,那就是手毀的問題。
-
1.過程是優先的,我不知道執行緒。 但是,優先順序肯定會影響你的程式,因為PC上沒有真正談論的Kai Rushi作業系統,而是多工處理系統Sun Qi。
-
不可能自己定義自己,這是由作業系統決定的。
但是,程式可以為其每個執行緒設定優先順序,並且優先順序將影響執行緒時間片的長度。
-
呼叫函式的執行緒在該執行緒上執行。
它與建立物件的執行緒無關。
-
可以將 ** 注入到目標程序中,然後呼叫 getmodulehandleex
或者使用 toolhelp 直接迴圈訪問指定程序的所有 dll
-
懶得打字,就掛網了(別怪我,真的很煩人。 匯出函式的修飾符名稱 declspec(dllexport),def 檔案,不是一句話) public declare function yourfuncwithoutdecorate lib"" (byval yourarg as yourclass) as string。
最廣泛接受的時間物理理論是阿爾伯特·愛因斯坦的相對論。 在相對論中,時間和空間共同構成了乙個四維時空,構成了宇宙的基本結構。 時間和空間不是愛因斯坦的絕對值,觀察者以不同的相對速度或不同時空結構的不同測量點測量時間的流逝。 >>>More
有一次,科學家們研究了超越光速的可能性,幻想有一天能夠製造出移動速度超過光速的火箭。 這樣一來,人們只需乘坐這枚火箭,就可以趕上地球上發出的光訊號,從而看到過去地球上發生了什麼。 這意味著,在光速下,時間會倒轉,人們會在明天、今天、然後是昨天過去。 >>>More
帶。 傷中庸。
《傷中庸》是北宋作家王安石的一篇散文。 講述了一位來自江西錦溪的神童名叫“方仲勇”,因為父親不讓他讀書,被父親當作賺錢工具而淪為普通人的故事。 文章以中庸為例,告誡人們不能不學習新知識就單純依靠天賦,而要注重後天教育與學習,強調後天教育和學習對成為人才的重要性。 >>>More