.NET- এ পরিচালিত সংস্থান এবং অব্যবস্থাপিত সংস্থান দ্বারা শব্দটি কী বোঝায়? তারা কীভাবে ছবিতে আসে?
.NET- এ পরিচালিত সংস্থান এবং অব্যবস্থাপিত সংস্থান দ্বারা শব্দটি কী বোঝায়? তারা কীভাবে ছবিতে আসে?
উত্তর:
"অপরিকল্পিত সংস্থান" শব্দটি সাধারণত কোনও কিছু আবর্জনা সংগ্রাহকের নিয়ন্ত্রণে নয় এমন কিছু বর্ণনা করতে ব্যবহৃত হয় । উদাহরণস্বরূপ, আপনি যদি কোনও ডাটাবেস সার্ভারের সাথে কোনও সংযোগ খোলেন তবে এটি সার্ভারের সংস্থানগুলি (সংযোগ বজায় রাখার জন্য) এবং ক্লায়েন্ট মেশিনে সম্ভবত অন্যান্য নন-নেট সংস্থানগুলি ব্যবহার করবে, যদি সরবরাহকারী পুরোপুরি পরিচালিত কোডটিতে লিখিত না থাকে।
এই কারণেই, ডাটাবেস সংযোগের মতো কোনও কিছুর জন্য আপনাকে এইভাবে আপনার কোড লেখার পরামর্শ দেওয়া হচ্ছে:
using (var connection = new SqlConnection("connection_string_here"))
{
// Code to use connection here
}
যেহেতু এটি নিশ্চিত করে যে .Dispose()
সংযোগ অবজেক্টে ডেকে আনা হয়েছে তা নিশ্চিত করে যে কোনও ব্যবস্থাবিহীন সংস্থান পরিষ্কার করা হয়েছে।
প্রশ্নোত্তরতে অপরিকল্পিত সংস্থানগুলি কী কী? 1 , ব্রুস উড নিম্নলিখিত পোস্ট করেছেন:
আমি "পরিচালিত" এবং "পরিচালনাবিহীন" পদগুলি এইভাবে মনে করি:
"ম্যানেজড" বলতে। নেট স্যান্ডবক্সের মধ্যে যে কোনও কিছু বোঝায়। এর মধ্যে সমস্ত .NET ফ্রেমওয়ার্ক ক্লাস রয়েছে।
"পরিচালনাহীন" বলতে .NET স্যান্ডবক্সের বাইরের প্রান্তিকে বোঝায়। এতে উইন 32 এপিআই ফাংশনগুলিতে কলগুলির মাধ্যমে আপনাকে ফেরত দেওয়া এমন কিছু অন্তর্ভুক্ত রয়েছে।
আপনি যদি কখনও উইন 32 এপিআই ফাংশনকে কল করেন না এবং কোনও উইন 32 "হ্যান্ডেল" অবজেক্ট ফিরে না পান, তবে আপনি কোনও ব্যবস্থাবিহীন সংস্থান রাখছেন না। .NET ফ্রেমওয়ার্ক শ্রেণীর পদ্ধতিগুলির মাধ্যমে আপনি যে ফাইল এবং স্ট্রিমগুলি খোলেন সেগুলি হ'ল সমস্ত পরিচালিত মোড়ক।
মন্তব্য: আপনি সরাসরি পরিচালনা না করা সংস্থানটি ধরে রাখছেন না । তবে আপনি সিস্টেমে.আইও.ফাইস্ট্রিমের মতো পরিচালিত "র্যাপার ক্লাস" এর মাধ্যমে অপ্রত্যক্ষভাবে একটি অপরিকল্পিত রিসোর্স ধরে রেখেছেন । এই ধরনের একটি মোড়কের শ্রেণি সাধারণত আইডিস্পোজেবল প্রয়োগ করে (হয় প্রত্যক্ষ বা উত্তরাধিকারের মাধ্যমে)।
... অনেকগুলি পরিচালিত (.NET ফ্রেমওয়ার্ক) অবজেক্টগুলি তাদের ভিতরে নিয়ন্ত্রণহীন সংস্থান রাখে এবং আপনি সম্ভবত যত তাড়াতাড়ি সম্ভব সেগুলি নিষ্পত্তি করতে চান বা কমপক্ষে আপনার কলকারীদের এটি করার সুযোগ দিতে পারেন। এইখানেই আপনার নিজস্ব ডিসপোজ () পদ্ধতি লেখার বিষয়টি আসে Es মূলত, আইডিস্পোজেবল () বাস্তবায়ন করা আপনার পক্ষে দুটি কাজ করে:
আপনাকে নেট। নেটের পিছনে (অপরিশোধিত সংস্থানসমূহ) এর পিছনে অপারেটিং সিস্টেম থেকে সরাসরি যে কোনও সংস্থান দখল করা থেকে মুক্তি পেতে অনুমতি দেয়।
আপনি এবং আপনার কলকারীদের মোটা .NET অবজেক্ট /। নেট অবজেক্ট যা আপনার / আপনার কলাররা এখন মুক্তি পেতে চাইছে তাদের গ্রুবিত সামান্য হাতে মূল্যবান সংস্থান রাখার অনুমতি দেয় ।
মন্তব্য: বাস্তবায়ন করার মাধ্যমে IDisposable
এবং যার ফলে একটি প্রদানের Dispose()
পদ্ধতি, আপনি আপনার ক্লাসের একটি ব্যবহারকারী বিজ্ঞপ্তিতে একটি সক্রিয় হয় নির্ণায়ক ফ্যাশন কোনো অপরিচালিত সম্পদের একটি দৃষ্টান্ত আপনার বর্গ দ্বারা অনুষ্ঠিত হয়।
1 লিঙ্কটি মূলত শচীন শনভাগের উত্তরে ভাগ করা হয়েছে । 2005-11-17 তারিখে উদ্ধৃত উপাদান। নোট করুন যে আমি উদ্ধৃত সামগ্রীটি হালকাভাবে অনুলিপি করেছি।
পরিচালিত এবং নিয়ন্ত্রণহীন সংস্থানগুলির মধ্যে মূল পার্থক্য হ'ল আবর্জনা সংগ্রহকারী সমস্ত পরিচালিত সংস্থান সম্পর্কে জানে, কোনও এক সময় জিসি উপস্থিত হবে এবং একটি পরিচালিত অবজেক্টের সাথে সম্পর্কিত সমস্ত স্মৃতি এবং সংস্থান পরিষ্কার করবে। জিসি ফাইল, স্ট্রিম এবং হ্যান্ডলগুলি যেমন পরিচালনা না করা রিসোর্সগুলি সম্পর্কে জানে না, তাই আপনি যদি আপনার কোডটিতে এগুলি স্পষ্টভাবে পরিষ্কার না করেন তবে আপনার মেমরি ফাঁস এবং লক হওয়া সংস্থানগুলি শেষ হবে।
আরও বিশদের জন্য - http://bytes.com/topic/c-sharp/answers/276059- কি- পরিচালিত- উত্স
পরিচালিত সংস্থানগুলি হ'ল সংস্থান যা আবর্জনা সংগ্রহকারী দ্বারা মুক্ত করা যায় এবং অপব্যবহারযোগ্য সংস্থানগুলি আবর্জনা সংগ্রাহক দ্বারা এই উদ্দেশ্যে মুক্ত করা যায় না এজন্য ধ্বংসকারী প্রয়োজন।