簡體   English   中英

可以在注冊表項上安全使用收益率返回模式

[英]Is yield-return pattern safe to use on Registry keys

在我的公司中,我看到了一些代碼,這些代碼在Windows注冊表中搜索某些項並返回IEnumerable,其中T是一個對象,該對象包含與查找模式匹配的注冊表項的值和數據。 執行此處理的方法使用收益-收益模式。 包含yield-return的foreach完成后,關閉注冊表項。

我的問題是訪問Windows注冊表是否安全? 由於直到迭代完成才關閉鍵,如果假設發生電源故障/系統崩潰,並且考慮到迭代完成之前可能存在任意延遲,將會產生什么影響?

我可能還會提到,在任何時間點,返回的元素數量都很少-最多20個。

保持注冊表項處於打開狀態以供閱讀,這將主要占用OS資源...因此

  1. 如果發生電源故障或系統崩潰-我認為您不必擔心此代碼。.OS本身不見了,任何進程所擁有的所有資源(如句柄)也都消失了( 沒有來自操作系統的智能持久性)。

  2. 另一方面,始終認為最好的方法是盡快釋放任何OS資源。如果列表很小,我將立即讀取它,然后從內存列表中返回值。因為根據使用此API的代碼以及操作方式的不同,從理論上講,它容易受到調用者的濫用。

我想說,就您而言,這是一個很好的呼吁和盡職調查,至少考慮了將系統資源占用不必要的時間束縛的含義。

正如彼得在評論中提到的,請在使用語句中包裹所有可拋棄的對象。

暫無
暫無

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

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