代碼時異常被稱爲:「外部組件已引發異常。」調用WicRenderTarget
try
{
renderBitmap = new WicRenderTarget(DXManager.Factory, host.bmp, new RenderTargetProperties());
}
catch (Exception ex)
{
// Exists entirely so that we can set a break point to catch this on the Exception.
throw ex;
}
host.bmp是SharpDX.WIC.Bitmap。我們偶爾會得到上述「外部組件已經拋出異常。」用「-2147467259」(它映射到0x80004005的或「未指定錯誤」)的錯誤代碼異常和以下堆棧跟蹤:
at SharpDX.Direct2D1.Factory.CreateWicBitmapRenderTarget(Bitmap target, RenderTargetProperties& renderTargetProperties, RenderTarget renderTarget)
at SharpDX.Direct2D1.WicRenderTarget..ctor(Factory factory, Bitmap wicBitmap, RenderTargetProperties renderTargetProperties)
at MyCompany.Framework.DirectX.DXRenderableImage.Surface..ctor(DXRenderableImage Target, PointF NewOrigin, Color BackgroundColor) in Source ....\\Framework\\DirectX\\DXImageSurface.cs:line 150
用於DXRenderableImage.Surface構造的代碼是在頂部提到的代碼這個問題基本上只是調用WicRenderTarget構造函數。
據我所知,工廠是好的。當我們正在快速連續處理相當複雜的頁面時,會發生此異常,並生成用於保存頁面的預覽縮略圖。我們的線程保存邏輯應該一次只能調用一個,所以這應該被門控。這可能與難以達到渲染鎖定(我們已經在類似情況下看到了不同的例外情況)。
我只是對如何去調試這個問題感到困惑。該例外沒有任何支持信息,否則一切似乎都是有序的。有沒有人有我的答案,或者找出答案的好方法?
這個異常是否有內部異常?內部異常有什麼信息? –
@ChetanRanpariya:沒有內在的例外。 –
與你的問題無關,但重新拋出異常,你不應該使用「扔前」這會吃掉你的堆棧跟蹤。最好使用「throw」來保留你的堆棧跟蹤。 – Gurpreet