要將一個背景程式的輸出Redirect到一個檔案去,如果是用以下的方法是沒用的。
# ./program & > log.txt
正確的方式應該是先Redirect後再丟到背景執行,如下:
# ./program > log.txt 2>&1 &
2012年7月26日 星期四
2012年7月25日 星期三
MFC自訂Message
最近發生在按件事件觸發後,執行到某個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的問題。
解決方式可以用自訂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月19日 星期四
訂閱:
文章 (Atom)