2012-08-06 121 views
-1

我有一個我在其他地方使用的dll文件,但是在dll文件中,我有一個類,它需要經常由它內部的函數進行更新。然後我想創建一個循環,每次執行該函數。但即便如此,它暫停了使用dll的線程,因爲它在循環中被捕獲(等待它結束)。因此,我的程序凍結。不會暫停執行的C++循環

那麼,如何創建此循環而不會凍結我的線程。

PS。我雖然並試圖使用一個計時器(.net),但我真的想排除託管代碼。

+0

在DLL中創建一個計時器? – 2012-08-06 20:04:43

+5

難道你不能啓動另一個線程並從中調用該函數嗎? – learnvst 2012-08-06 20:06:31

+0

不,我想要一個DLL(有一個原因,但我不想現在討論),我試圖創建一個計時器,但是當定義事件處理程序時,我必須混合託管代碼和非託管代碼,builded完美,但在調試時,會崩潰。 – 2012-08-06 20:15:48

回答

0

沒有任何代碼示例,它不會很容易給你一個確切的答案,但基本上你需要一個新的線程。您創建新線程的方式取決於您/您使用的API。你可以使用.NET,你可以使用boost,就像Lirik建議的那樣,WINAPI,不管。這一切歸結爲:C++中的線程是特定於平臺的(請參閱Simple example of threading in C++)。因此,如果沒有關於操作系統和編譯器的更多細節,實際的代碼示例將不可能實現。由於「執行暫停」可能只是一個無限循環,因此您可能需要考慮閱讀有關C++線程的一些材料。

如果功能已經封裝在一個類中,這很好,因爲您可以將線程的啓動和結束的責任正確地賦予類本身,而不需要調用線程知道它的任何內容。