अगर मैं एक CryptoStream
है कि मैं वापस उपयोगकर्ता के पास करना चाहते है, भोली दृष्टिकोण होगाक्या क्रिप्टोस्ट्रीम लौटाया जा सकता है और अभी भी सबकुछ ठीक से निपट सकता है?
public Stream GetDecryptedFileStream(string inputFile, byte[] key, byte[] iv)
{
var fsCrypt = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.Read);
var rmCrypto = new RijndaelManaged();
var transform = rmCrypto.CreateDecryptor(key, iv);
var cs = new CryptoStream(fsCrypt, transform, CryptoStreamMode.Read);
return cs;
}
मुझे पता है कि जब मैं CryptoStream
निपटान अंतर्निहित FileStream
will also be disposed। जिस मुद्दे में मैं चल रहा हूं वह है कि मैं rmCrypto
और transform
के साथ क्या करूँ? RijndaelManaged
और ICryptoTransform
डिस्पोजेबल कक्षाएं हैं, लेकिन धारा का निपटान उन दो वस्तुओं का निपटान नहीं करता है।
इस स्थिति को संभालने का सही तरीका क्या है?
प्रयुक्त, 'rmCrypto' और' transform' के बाद आप 'GetDecryptedFileStream' से लौटने के रूप में वे अपने विधि में स्थानीय चर रहे हैं निपटारा किया जाना चाहिए। –
@YuvalItzchakov दायरे से बाहर जाने का मतलब निपटान नहीं किया जा रहा है। जीसी उन दो वस्तुओं को अंतिम रूप नहीं देगा जब तक कि 'सीएस' के अंतिम संदर्भ को जारी नहीं किया जाता है। –
ओह, मैं आपकी 'क्रिप्टोस्ट्रीम' को पैरामीटर के रूप में स्वीकार करने में विफल रहा। –