When we end the connection call OnConnectionClosed instead of OnConnectionStateChanged.

This avoids firing the ConnectionClosed event explicitly after EndConnect;
it also avoids refreshing explicitly the tree as the main Window handles the
ConnectionClosed event which requests a refresh.

Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>
This commit is contained in:
Konstantina Chremmou 2018-10-03 11:05:41 +01:00 committed by Mihaela Stoica
parent be0176afe0
commit c3fcffa236
3 changed files with 6 additions and 55 deletions

View File

@ -156,7 +156,6 @@ namespace XenAdmin.Commands
XenDialogBase.CloseAll(connection);
connection.EndConnect();
MainWindowCommandInterface.SaveServerList();
MainWindowCommandInterface.RequestRefreshTreeView();
}
private bool AllActionsFinished(IXenConnection connection, bool treatCancelingAsFinished)

View File

@ -817,7 +817,7 @@ namespace XenAdmin
con.EndConnect();
}
RequestRefreshTreeView();
//CA-41228 refresh submenu items when there are no connections
SelectionManager.RefreshSelection();
}
@ -1158,74 +1158,27 @@ namespace XenAdmin
}
}
void Connection_ConnectionResult(object sender, Network.ConnectionResultEventArgs e)
private void Connection_ConnectionResult(object sender, Network.ConnectionResultEventArgs e)
{
RequestRefreshTreeView();
Program.Invoke(this, (EventHandler<ConnectionResultEventArgs>)Connection_ConnectionResult_, sender, e);
}
private void Connection_ConnectionResult_(object sender, Network.ConnectionResultEventArgs e)
{
Program.AssertOnEventThread();
try
{
UpdateToolbars();
}
catch (Exception exn)
{
log.Error(exn, exn);
// Can do nothing more about this.
}
}
void Connection_ConnectionClosed(object sender, EventArgs e)
private void Connection_ConnectionClosed(object sender, EventArgs e)
{
RequestRefreshTreeView();
Program.Invoke(this, (EventHandler<Network.ConnectionResultEventArgs>)Connection_ConnectionClosed_, sender, e);
gc();
}
private void Connection_ConnectionClosed_(object sender, EventArgs e)
{
Program.AssertOnEventThread();
try
{
UpdateToolbars();
}
catch (Exception exn)
{
log.Error(exn, exn);
// Nothing more we can do with this.
}
}
// called whenever our connection with the Xen server fails (i.e., after we've successfully logged in)
void Connection_ConnectionLost(object sender, EventArgs e)
private void Connection_ConnectionLost(object sender, EventArgs e)
{
if (Program.Exiting)
return;
Program.Invoke(this, (EventHandler)Connection_ConnectionLost_, sender, e);
Program.Invoke(this, () => CloseActiveWizards((IXenConnection)sender));
RequestRefreshTreeView();
gc();
}
private void Connection_ConnectionLost_(object sender, EventArgs e)
{
Program.AssertOnEventThread();
try
{
IXenConnection connection = (IXenConnection)sender;
CloseActiveWizards(connection);
UpdateToolbars();
}
catch (Exception exn)
{
log.Error(exn, exn);
// Can do nothing about this.
}
}
private static void gc()
{
GC.Collect();

View File

@ -449,7 +449,6 @@ namespace XenAdmin.Network
//user cannot provide correct credentials, we d/c now to save the confusion of having the server available
//but unusable.
EndConnect();
OnConnectionClosed();
throw new CancelledException();
}
break;
@ -781,7 +780,7 @@ namespace XenAdmin.Network
}
_promptForNewPassword = null;
OnConnectionStateChanged();
OnConnectionClosed();
}
/// <summary>