[問題] VC++ broadcast系統更變很慢的問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ MFC
問題(Question):
改變系統設定→廣播制系統使設定生效。
廣播的指令下下去後會停住三秒左右才完成動作,但一樣的動作,
在寫程式的初期並沒有發生會停住好幾秒這種狀況,
將編譯好的程式拿到其它電腦也不會這樣,
想釐清問題,想知道是電腦其他設定影響還是程式有問題,
請問有什麼其他可能的因素導致這種情況的產生呢?
餵入的資料(Input):
我在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags裡
加了個一筆資料,然後下
::SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, NULL);
程式會在執行這行時停約三秒的時間。
預期的正確結果(Expected Output):
應該幾乎感覺不到等待時間。
錯誤結果(Wrong Output):
須等待約約三秒。
這情況只在目前撰寫程式的電腦發生。
程式碼(Code):(請善用置底文網頁, 記得排版)
::SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, NULL);
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.193.25
→
04/09 01:45, , 1F
04/09 01:45, 1F
確實使用PostMessage()可以解決程式執行中突然停住的問題,
網路上有查到說PostMessage()會有不同步的問題(下完指令就跑,不管系統執行完沒);
而SendMessage()會有堵塞的問題,
也就是說,其實兩個function都可以用而且做用的時間應該是一樣的,
只是SendMessage()送出去的要求會在被執行後才繼續後面的動作,
所以我主要想知道的是 是什麼造成這種堵塞問題?
※ 編輯: prjryu 來自: 111.251.193.25 (04/09 01:59)
→
04/09 02:15, , 2F
04/09 02:15, 2F
不是,是想知道造成堵塞的主因,想試試有沒有辦法將這種情況排除。
推
04/09 02:22, , 3F
04/09 02:22, 3F
試過了,不會。
※ 編輯: prjryu 來自: 111.251.193.25 (04/09 02:39)
推
04/09 02:46, , 4F
04/09 02:46, 4F
→
04/09 02:46, , 5F
04/09 02:46, 5F
→
04/09 02:49, , 6F
04/09 02:49, 6F
→
04/09 02:51, , 7F
04/09 02:51, 7F
→
04/09 02:52, , 8F
04/09 02:52, 8F
推
04/09 09:19, , 9F
04/09 09:19, 9F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章