আমি আমার বৃহত্তর এমভিসি অ্যাপ্লিকেশনগুলির একটিতে বড় রিফ্যাক্টরিং / স্পিড টুইট করছি। এটি এখন কয়েক মাস ধরে প্রোডাক্টে মোতায়েন করা হয়েছে এবং আমি সংযোগ পুলে সংযোগের অপেক্ষায় টাইমআউট পেতে শুরু করেছি। সংযোগগুলি সঠিকভাবে নিষ্পত্তি না হওয়ার বিষয়ে আমি বিষয়টি ট্র্যাক করেছি।
এর আলোকে, আমি তখন থেকে আমার বেস নিয়ামকটিতে এই পরিবর্তনটি করেছি:
public class MyBaseController : Controller
{
private ConfigurationManager configManager; // Manages the data context.
public MyBaseController()
{
configManager = new ConfigurationManager();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (this.configManager != null)
{
this.configManager.Dispose();
this.configManager = null;
}
}
base.Dispose(disposing);
}
}
এখন, আমার দুটি প্রশ্ন রয়েছে:
- আমি কি কোনও রেসের শর্ত প্রবর্তন করছি? যেহেতু এটি
configManager
পরিচালনাগুলিতে দেখা যায়DataContext
যাIQueryable<>
প্যারামিটারগুলি প্রকাশ করে, তাই আমার নিশ্চিত করা দরকার যেDispose()
ভিউ রেন্ডারিং শেষ হওয়ার আগে নিয়ামককে কল করা হবে না। - এমভিসি ফ্রেমওয়ার্কটি
Dispose()
ভিউ রেন্ডার হওয়ার আগে বা পরে কন্ট্রোলারে কল করে? অথবা, এমভিসি কাঠামো কি তা আবর্জনা সংগ্রহে ছেড়ে যায়?