多執行緒:建立使用介面執行緒

來源:互聯網
上載者:User

版本:Visual Studio 2005

 

使用介面執行緒通常用於處理使用者輸入和響應使用者事件,這些行為獨立於執行該應用程式其他部分的線程。已經建立並啟動主應用程式線程(在 CWinApp 匯出的類中提供)。本文描述建立其他使用介面執行緒所需的步驟。

建立使用介面執行緒時,必須首先從 CWinThread 衍生類別。必須使用 DECLARE_DYNCREATE 和 IMPLEMENT_DYNCREATE 宏聲明並實現此類。此類必須重寫某些函數,也可以重寫其他函數。下表列出了這些函數及其用途。

建立使用介面執行緒時要重寫的函數
函數 用途

ExitInstance

線程終止時執行清除。通常重寫。

InitInstance

執行線程執行個體初始化。必須重寫。

OnIdle

執行線程特定的閑置時間處理。通常不重寫。

PreTranslateMessage

將訊息調度到 TranslateMessageDispatchMessage 之前對其進行篩選。通常不重寫。

ProcessWndProcException

截獲由線程的訊息和命令處理常式引發的未處理異常。通常不重寫。

Run

控制線程的函數。包含訊息泵。一般不重寫。

MFC 通過參數重載提供兩個版本的 AfxBeginThread:一個用於使用介面執行緒,另一個用於輔助線程。若要啟動使用介面執行緒,請調用 AfxBeginThread,提供下列資訊:

  • CWinThread 派生的類的 RUNTIME_CLASS。

  • (可選)所需的優先順序層級。預設值為正常優先順序。有關可用的優先順序層級的更多資訊,請參見 Platform SDK 中的 SetThreadPriority。

  • (可選)所需的線程堆棧大小。預設值與建立線程的堆棧大小相同。

  • (可選)CREATE_SUSPENDED,如果希望在掛起狀態中建立線程。預設值為 0,即正常啟動線程。

  • (可選)所需的安全屬性。預設值與父線程具有相同的訪問權。有關此安全資訊格式的更多資訊,請參見 Platform SDK 中的 SECURITY_ATTRIBUTES。

AfxBeginThread 為您完成大部分工作。它建立類的新對象、使用您提供的資訊初始化該對象並調用 CWinThread::CreateThread 開始執行線程。在整個過程中進行檢查,確保假如建立過程的任何部分出現故障,所有對象都能被正確地解除配置。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.