// This procedure is where the actual cleanup occurs private void Dispose(bool disposing) { try { // Exit now if the object has already been disposed if (disposed) { return; } if (disposing) { // The object is being disposed, not finalized. // It is safe to access other objects (other than the mybase object) // only from inside this block _ourSettingsControl.SkipRegexCheckBox.CheckedChanged -= SkipRegexChanged; _ourSettingsControl.SkipRegexTextBox.TextChanged -= SkipRegexChanged; _ourSettingsControl.TemplateNameTextBox.TextChanged -= TemplateNamesChanged; _ourSettingsControl.HasAlternateNamesCheckBox.CheckedChanged -= TemplateNamesChanged; _ourSettingsControl.AlternateNamesTextBox.TextChanged -= TemplateNamesChanged; _ourSettingsControl.PropertiesButton.Click -= PropertiesButtonClick; ShowHideOurObjects(false); _ourTab.Dispose(); _ourSettingsControl.Goodbye(); _ourSettingsControl.Dispose(); PluginManager.AWBForm.PluginsToolStripMenuItem.DropDownItems.Remove(OurMenuItem); } } catch (Exception) { } finally { // Perform cleanup that has to be executed in either case: _ourTab = null; OurMenuItem = null; TheArticle = null; Template = null; MainRegex = null; SecondChanceRegex = null; PreferredTemplateNameRegex = null; _ourTab = null; _ourSettingsControl = null; _deleteMeMenuItem = null; SkipRegex = null; // Remember that this object has been disposed of: disposed = true; } }
// Initialisation: internal GenericTemplatePlugin(string myName) : base(true) { _ourSettingsControl = new GenericTemplateSettings(myName); _ourTab = new TabPage(myName); _ourName = myName; // Keep track of changing configuration by suscribing to various events: _ourSettingsControl.SkipRegexCheckBox.CheckedChanged += SkipRegexChanged; _ourSettingsControl.SkipRegexTextBox.TextChanged += SkipRegexChanged; _ourSettingsControl.TemplateNameTextBox.TextChanged += TemplateNamesChanged; _ourSettingsControl.HasAlternateNamesCheckBox.CheckedChanged += TemplateNamesChanged; _ourSettingsControl.AlternateNamesTextBox.TextChanged += TemplateNamesChanged; //AddHandler OurSettingsControl.AlternateNamesTextBox.EnabledChanged, AddressOf TemplateNamesChanged ' CheckedChanged should covert this _ourSettingsControl.PropertiesButton.Click += PropertiesButtonClick; _ourSettingsControl.GetRedirectsButton.Click += GetRedirectsButtonClick; }
// This procedure is where the actual cleanup occurs private void Dispose(bool disposing) { try { // Exit now if the object has already been disposed if (disposed) return; if (disposing) { // The object is being disposed, not finalized. // It is safe to access other objects (other than the mybase object) // only from inside this block _ourSettingsControl.SkipRegexCheckBox.CheckedChanged -= SkipRegexChanged; _ourSettingsControl.SkipRegexTextBox.TextChanged -= SkipRegexChanged; _ourSettingsControl.TemplateNameTextBox.TextChanged -= TemplateNamesChanged; _ourSettingsControl.HasAlternateNamesCheckBox.CheckedChanged -= TemplateNamesChanged; _ourSettingsControl.AlternateNamesTextBox.TextChanged -= TemplateNamesChanged; _ourSettingsControl.PropertiesButton.Click -= PropertiesButtonClick; ShowHideOurObjects(false); _ourTab.Dispose(); _ourSettingsControl.Goodbye(); _ourSettingsControl.Dispose(); PluginManager.AWBForm.PluginsToolStripMenuItem.DropDownItems.Remove(OurMenuItem); } } catch (Exception) { } finally { // Perform cleanup that has to be executed in either case: _ourTab = null; OurMenuItem = null; TheArticle = null; Template = null; MainRegex = null; SecondChanceRegex = null; PreferredTemplateNameRegex = null; _ourTab = null; _ourSettingsControl = null; _deleteMeMenuItem = null; SkipRegex = null; // Remember that this object has been disposed of: disposed = true; } }