最近發生在按件事件觸發後,執行到某個Thread,然後此Thread會做更新UI的動作,結果悲劇就產生了,DeadLock....
解決方式可以用自訂Message的方式來解決,如果Thread要更新UI,可以用PostMessage來取代。自訂Message的方式如下:
1. 先在Header檔訂義自訂的Message
#define WM_MY_MSG (WM_USER+ N)
[註] N為一個整數,來區別不同自訂的訊息
2. 加入處理此訊息的Function宣告
afx_msg LRESULT OnMyMSG(WPARAM wPararm, LPARAM lParam);
3. 在CPP檔加入消息映射
BEGIN_MESSAGE_MAP(CFactoryAPDlg, CDialog)
ON_MESSAGE(WM_MY_MSG, OnMyMSG)
END_MESSAGE_MAP()
4. 實作OnMyMSG()
實作完後,就可以在Thread處理時,用PostMessage(WM_MY_MSG)來解決DeadLock的問題。
2012年7月25日 星期三
2012年7月19日 星期四
2012年7月13日 星期五
2012年6月29日 星期五
Sleep in batch script
當我們在寫批次檔來完成某些事項時,如果需要暫停幾秒再執行某些指令,本來以為用sleep即可,不過實驗證明是沒用的。有以下兩種方法可以達成
- TIMEOUT /T 10
- ping 127.0.0.1 -n 10 -w 1000 > nul
2012年5月18日 星期五
2011年9月3日 星期六
圓剛HomeFree Combo開箱文
2011年3月5日 星期六
2011年2月19日 星期六
2010年11月21日 星期日
蒙提霍爾(Monty Hall Problem)
Monty Hall Problem
參賽者會看見三扇關閉了的門,其中一扇的後面有一輛汽車,選中後面有車的那扇門就可以贏得該汽車,而另外兩扇門後面則各藏有一隻山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人會開啟剩下兩扇門的其中一扇,露出其中一隻山羊。主持人其後會問參賽者要不要換另一扇仍然關上的門。問題是:換另一扇門會否增加參賽者贏得汽車的機率?
之前忘了在哪有聽到這個問題,不過都沒太仔細去思考這個問題,想說機率不都是三分之一嗎?沒想到換門的話,真的會提高機率。
參賽者會看見三扇關閉了的門,其中一扇的後面有一輛汽車,選中後面有車的那扇門就可以贏得該汽車,而另外兩扇門後面則各藏有一隻山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人會開啟剩下兩扇門的其中一扇,露出其中一隻山羊。主持人其後會問參賽者要不要換另一扇仍然關上的門。問題是:換另一扇門會否增加參賽者贏得汽車的機率?
之前忘了在哪有聽到這個問題,不過都沒太仔細去思考這個問題,想說機率不都是三分之一嗎?沒想到換門的話,真的會提高機率。
訂閱:
文章 (Atom)
