1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-05-12 14:34:08 +02:00

Minor code refactoring, fix potential event memory leaks

This commit is contained in:
chylex 2017-03-14 23:47:30 +01:00
parent 9ec1764194
commit 4c59526e39
6 changed files with 21 additions and 7 deletions

View File

@ -59,7 +59,7 @@ public FormNotificationBase(Form owner, NotificationFlags flags){
this.owner = owner;
this.flags = flags;
owner.FormClosed += (sender, args) => Close();
owner.FormClosed += owner_FormClosed;
browser = new ChromiumWebBrowser("about:blank"){
MenuHandler = new ContextMenuNotification(this, !flags.HasFlag(NotificationFlags.DisableContextMenu)),
@ -73,7 +73,11 @@ public FormNotificationBase(Form owner, NotificationFlags flags){
browser.IsBrowserInitializedChanged += Browser_IsBrowserInitializedChanged;
panelBrowser.Controls.Add(browser);
Disposed += (sender, args) => browser.Dispose();
Disposed += (sender, args) => {
browser.Dispose();
owner.FormClosed -= owner_FormClosed;
};
// ReSharper disable once VirtualMemberCallInContructor
UpdateTitle();
@ -89,6 +93,10 @@ protected override void WndProc(ref Message m){
// event handlers
private void owner_FormClosed(object sender, FormClosedEventArgs e){
Close();
}
private void Browser_IsBrowserInitializedChanged(object sender, IsBrowserInitializedChangedEventArgs e){
if (e.IsBrowserInitialized && Initialized != null){
Initialized(this, new EventArgs());

View File

@ -32,8 +32,8 @@ private void Callback(){
}
public void Dispose(){
timeout.Dispose();
screenshot.Dispose();
timeout.Dispose();
}
}
}

View File

@ -47,6 +47,8 @@ public FormPlugins(PluginManager pluginManager) : this(){
Program.UserConfig.PluginsWindow.Save(this);
Program.UserConfig.Save();
};
Disposed += (sender, args) => this.pluginManager.Reloaded -= pluginManager_Reloaded;
}
private void SelectGroup(PluginGroup group){

View File

@ -12,11 +12,11 @@ public TabSettingsUpdates(UpdateHandler updates){
InitializeComponent();
this.updates = updates;
this.updates.CheckFinished += updates_CheckFinished;
Disposed += (sender, args) => this.updates.CheckFinished -= updates_CheckFinished;
checkUpdateNotifications.Checked = Config.EnableUpdateCheck;
Disposed += (sender, args) => this.updates.CheckFinished -= updates_CheckFinished;
}
private void checkUpdateNotifications_CheckedChanged(object sender, EventArgs e){

View File

@ -39,6 +39,10 @@ public PluginManager(string path, PluginConfig config){
}
public void SetConfig(PluginConfig config){
if (this.Config != null){
this.Config.InternalPluginChangedState -= Config_InternalPluginChangedState;
}
this.Config = config;
this.Config.InternalPluginChangedState += Config_InternalPluginChangedState;
}

View File

@ -34,13 +34,13 @@ public FormUpdateDownload(UpdateInfo info){
this.updateInfo = info;
this.UpdateStatus = Status.Waiting;
Disposed += (sender, args) => webClient.Dispose();
webClient.DownloadProgressChanged += webClient_DownloadProgressChanged;
webClient.DownloadFileCompleted += webClient_DownloadFileCompleted;
Text = "Updating "+Program.BrandName;
labelDescription.Text = "Downloading version "+info.VersionTag+"...";
Disposed += (sender, args) => this.webClient.Dispose();
}
private void FormUpdateDownload_Shown(object sender, EventArgs e){