2015-08-17 15 views
0

我正在研究Windows上的一個小應用程序。它使用CImage在磁盤上寫入一個PNG文件。CImage ::保存導致的錯誤線程0x ****退出代碼1(0x1)

它只是這樣的:

CImage theImage; 
... 
theImage.Save("D:\\xxx.png"); 

寫入文件在磁盤上之後,我點擊了右上角的關閉按鈕來退出程序。控制檯告訴我這樣的消息:

Thread 0x**** has exited with code 1 (0x1) 
Program "[*****] xxx.exe" has exited with code 0 (0x0). 

代碼0x1應該指出一個錯誤,對吧?當由CImage::Save創建的線程正在寫入文件時似乎發生了錯誤。

圖像文件完全在磁盤上,沒有錯。我檢查了Save的返回值,它也表示成功。

我已經遍歷了我所有的代碼,我確定這肯定是由調用CImage::Save引起的,如果我不叫它,這個消息永遠不會彈出。也就是說,控制檯應該是這樣的:

Program "[*****] xxx.exe" has exited with code 0 (0x0). 

我做了一些搜索,我發現this post,但他們沒有做出來要麼。

即使程序沒有崩潰,但這個消息仍然讓我很煩惱。

有什麼想法?非常感謝。

+0

根據什麼規範,你認爲來自任意線程的返回值1表示一個錯誤? – IInspectable

回答

0

「代碼0x1應該表明錯誤,對嗎?」

只限於'錯誤'的最抽象含義。誰創作和銷燬線索決定了什麼樣的價值迴歸,以及這個價值意味着什麼。可能是因爲有人使用了一些需要清理的庫,而這些清理工作沒有及時完成,或者有1000個可能的原因。不要花時間。

+0

好吧,(雖然沒有任何證據)我只是認爲線程是由框架創建的,作爲工作線程將文件寫入磁盤,所以如果工作正常完成,它應該以返回代碼0x0退出,應該在關閉程序之前退出,而不是等到我點擊關閉按鈕的那一刻。無論如何,就像你說的,不要花時間,因爲我不知道什麼線程是什麼和退出代碼0x1意味着什麼。 :-) – qrlozte