From 9c122eb9b0a8f679980a507e3bb32a017782032b Mon Sep 17 00:00:00 2001 From: Dickon Field Date: Sat, 21 Oct 2006 07:17:31 +0000 Subject: [PATCH] Backgrounded metadata load from file operation git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1918 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/Forms/DbModelInfoTreeNode.cs | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DbModelInfoTreeNode.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DbModelInfoTreeNode.cs index 30a2a2acf1..78d810b19d 100644 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DbModelInfoTreeNode.cs +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DbModelInfoTreeNode.cs @@ -8,11 +8,10 @@ using System; using System.Windows.Forms; using System.Data.Common; +using System.ComponentModel; using ICSharpCode.Core; - using SharpServerTools.Forms; - using SharpDbTools.Data; namespace SharpDbTools.Forms @@ -26,8 +25,14 @@ namespace SharpDbTools.Forms /// public class DbModelInfoTreeNode: TreeNode, IRequiresRebuildSource { + BackgroundWorker loadMetadataFromFileBackgroundWorker; + public DbModelInfoTreeNode(string name): base(name) - { + { + // use tag to carry the logical connection name + + this.Tag = name; + // create and add the menustrip for this node NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(this); @@ -187,8 +192,28 @@ namespace SharpDbTools.Forms private void LoadMetadataFromFileClickHandler(object sender, EventArgs e) { LoggingService.Debug("load metadata from file clicked"); - string logicalConnectionName = this.Text; - DbModelInfoService.LoadFromFile(logicalConnectionName); + this.loadMetadataFromFileBackgroundWorker = new BackgroundWorker(); + loadMetadataFromFileBackgroundWorker.DoWork += new DoWorkEventHandler(this.LoadMetadataFromFileDoWork); + loadMetadataFromFileBackgroundWorker.RunWorkerCompleted += + new RunWorkerCompletedEventHandler(this.LoadMetadataFromFileFinished); + string logicalConnectionName = (string)this.Tag; + this.Text = logicalConnectionName + ": loading..."; + this.ContextMenuStrip.Enabled = false; + this.loadMetadataFromFileBackgroundWorker.RunWorkerAsync(logicalConnectionName); + } + + private void LoadMetadataFromFileDoWork(object sender, DoWorkEventArgs args) + { + string logicalConnectionName = args.Argument as string; + if (logicalConnectionName != null) { + DbModelInfoService.LoadFromFile(logicalConnectionName); + } + } + + private void LoadMetadataFromFileFinished(object sender, RunWorkerCompletedEventArgs args) + { + this.Text = (string)this.Tag; + this.ContextMenuStrip.Enabled = true; this.FireRebuildRequired(); }