簡體   English   中英

FileNotFoundException花費的時間太長,是否可以縮短超時時間?

[英]FileNotFoundException taking too long to throw, is there a way to shorten the timeout?

我有一些代碼可以加載這樣的圖像:

 using (var sourceImage = Image.FromFile(fullImagePath))
 {
    return new Bitmap(sourceImage);
 }

有時,圖像將被錯誤命名或不在預期的位置,並且正確引發了System.IO.FileNotFoundException 但是,拋出此異常通常需要大約1秒。 當我的代碼捕獲了幾百張圖像而其中一些圖像丟失時,這將為該過程增加大量時間。

如果需要拋出異常,是否有一種方法可以加快異常發生?

我能想到的唯一替代方法是檢查圖像是否首先存在,但是這會給每個單個圖像獲取增加幾十毫秒,這也不是一個好的解決方案。

澄清fullImagePath包含的示例是:

\\ImageSrv\secure\sites\2756\27074\760789\bthumb\1287.jpg

同一目錄中可能還包含數百張其他圖像。

結論 :看起來檢查文件是否存在是最好的方法。

  1. 自己防止異常。 檢查文件是否存在而不是讓Image.FromFile失敗並通過異常shenennigans
  2. 將緩存保留在內存中,以消除其他硬盤驅動器調用的必要
  3. 如果情況需要,請使用FileSystemWatcher更新緩存

您可以保留文件名的緩存,並通過另一個線程定期更新。 然后,您可以對此進行檢查並立即知道文件是否存在(繞過File.Exists的開銷)

當然,如果不斷添加/刪除目錄中的文件,這將不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM