[英]Try..Except ignored inside a thread
在嘗試將 PNG 文件加載到TImage
時,我有一個基本的try..except
來捕獲錯誤:
try
Previewimage.Picture.LoadFromFile(filename);
except
//code to handle exception
end;
通常,如果文件不存在,或者在我的情況下 PNG 已損壞,這可以正常工作。 我無法控制PNG的源代碼創建,因此需要在無法加載PNG時捕獲,即它給出了錯誤:
此“便攜式網絡圖形”圖像無效,因為它包含無效的數據片段(crc 錯誤)。
我的問題是try..except
在工作線程中。 這似乎導致try..except
被忽略,並且我的程序因 CRC 異常而崩潰。
這個問題有什么簡單的解決方法嗎?
異常和try..except
塊在工作線程中工作得很好。 但是在沒有正確同步的情況下訪問 UI 控件可能會導致各種問題。 所以不要這樣做。
在工作線程的上下文中,使用本地TPicture
object 或更好的TPNGImage
object 加載 PNG 文件,然后使用TThread.Synchronize()
或TThread.Notify()
Assign()
ZA8CFDE6331BD59EB2AC96F 的上下文中的 ZA8CFDE6331BD59EB2AC96F 到TImage
主線程,例如:
try
PNG := TPNGImage.Create;
try
PNG.LoadFromFile(filename);
TThread.Synchronize(nil,
procedure
begin
Previewimage.Picture.Assign(PNG);
end
);
finally
PNG.Free;
end;
except
//code to handle exception
end;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.