From 54bf57767dfa65f2bdaa760d76abcc0278870264 Mon Sep 17 00:00:00 2001 From: dinghung Date: Wed, 18 Mar 2015 11:11:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E6=B7=BBaboutIDCM=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改GCM打开关闭再打开引起IDCM崩溃问题 优化Task代码,修复Taks长时任务RunTime时间不变化问题 修复定时检测登陆问题,原登陆时间检测有问题导致每次15分组去远程登陆变成每次都会去远程登陆 --- .../Core/LocalHandlerProxy.cs | 328 +++++++++--------- .../GCMDAM/SignExecutor.cs | 1 + IDCM/IDCM.Service/UIM/GCMItemsLoader.cs | 4 + IDCM/IDCM/App.config | 22 +- IDCM/IDCM/Forms/AboutDlg.cs | 9 + IDCM/IDCM/Forms/AboutDlg.designer.cs | 105 +++++- IDCM/IDCM/Forms/LoginStatusDlg.Designer.cs | 16 +- IDCM/IDCM/Forms/LoginStatusDlg.cs | 5 + IDCM/IDCM/Forms/TaskInfoDlg.cs | 70 ++-- IDCM/IDCM/Forms/TaskInfoDlg.designer.cs | 56 ++- IDCM/IDCM/Forms/TaskInfoDlg.resx | 12 + IDCM/IDCM/ViewManager/GCMViewManager.cs | 4 - 12 files changed, 403 insertions(+), 229 deletions(-) diff --git a/IDCM/IDCM.Service.Common/Core/LocalHandlerProxy.cs b/IDCM/IDCM.Service.Common/Core/LocalHandlerProxy.cs index 5fc08f8..e1d03e6 100644 --- a/IDCM/IDCM.Service.Common/Core/LocalHandlerProxy.cs +++ b/IDCM/IDCM.Service.Common/Core/LocalHandlerProxy.cs @@ -1,164 +1,164 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.ComponentModel; -using System.Threading; -using IDCM.Data.Base; - -namespace IDCM.Service.Common.Core -{ - /// - /// 后台处理方法的任务包装代理实现 - /// - class LocalHandlerProxy - { - /// - /// 构造方法 - /// - /// - public LocalHandlerProxy(AbsHandler _handler, Queue cascadeHandlers = null) - { - this.handler = _handler; - this.cascadeHandlers = cascadeHandlers; - doWorkTime = DateTime.Now; - } - /// - /// 后台任务执行方法的主体部分,异步执行代码段! - /// - /// - /// - public void worker_DoWork(object sender, DoWorkEventArgs e) - { - doWorkTime = DateTime.Now; - Thread.CurrentThread.Name = handler.GetType().Name; - //////////////////////// - List args = new List(); - if (e.Argument is Object[]) - { - args.AddRange((Object[])e.Argument); - } - else - args.Add(e.Argument); - BackgroundWorker worker = (BackgroundWorker)sender; - worker.ReportProgress(0); - e.Result = handler.doWork(worker, e.Cancel, args); - worker.ReportProgress(100); - } - /// - /// 后台任务执行结束,回调代码段 - /// - /// - /// - public void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - List args = new List(); - if (e.Result is Object[]) - { - args.AddRange((Object[])e.Result); - } - else - args.Add(e.Result); - BackgroundWorker worker = (BackgroundWorker)sender; - ////////////////////////////////////////// - handler.complete(worker, e.Cancelled, e.Error, args); - ////////////////////////////// - BGWorkerInvoker.removeWorker(worker); - } - /// - /// 后台任务执行结束后的串联执行任务队列的代理实现代码段 - /// - /// - /// - public void worker_cascadeProcess(object sender, RunWorkerCompletedEventArgs e) - { - if (e.Cancelled || e.Error != null) - return; - //插队串联部分 - if (handler.cascadeHandlers() != null) - { - Queue nextHandlers = this.cascadeHandlers; - if (nextHandlers == null) - this.cascadeHandlers = handler.cascadeHandlers(); - if (nextHandlers != null) - { - foreach (AbsHandler hand in nextHandlers) - { - cascadeHandlers.Enqueue(hand); - } - } - } - //队头出列,提交执行任务池 - if (this.cascadeHandlers != null && this.cascadeHandlers.Count > 0) - { - AbsHandler nextHandler = cascadeHandlers.Dequeue(); - List args = new List(); - if (e.Result is Object[]) - { - args.AddRange((Object[])e.Result); - } - else - args.Add(e.Result); - BGWorkerInvoker.pushHandler(nextHandler, args, cascadeHandlers); - } - } - /// - /// 后台任务执行过程中的状态反馈代码段 - /// - /// - /// - public void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) - { - List args = new List(); - if (e.UserState is Object[]) - { - args.AddRange((Object[])e.UserState); - } - else - args.Add(e.UserState); - BackgroundWorker worker = (BackgroundWorker)sender; - handler.progressChanged(worker, e.ProgressPercentage, args); - } - - /// - /// 获取任务代理包装的元处理器实例对象 - /// - /// - internal AbsHandler getHandler() - { - return handler; - } - /// - /// 获取任务代理包装的元处理器实例对象名称 - /// - /// - public string getProxyName() - { - return handler.GetType().Name; - } - /// - /// 返回运行累计时长 - /// 说明: - /// 1.以毫秒为单位 - /// 2.计算数值不排除异步运行完成后的存活时间 - /// - /// - public long getRunningTime() - { - TimeSpan span = DateTime.Now - doWorkTime; - return span.Milliseconds; - } - /// - /// 任务代理包装的元处理器实例对象 - /// - private AbsHandler handler; - /// - /// 等待执行的串联执行任务队列 - /// - private Queue cascadeHandlers = null; - /// - /// 用于标记任务执行的起始时间 - /// - private DateTime doWorkTime; - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; +using System.Threading; +using IDCM.Data.Base; + +namespace IDCM.Service.Common.Core +{ + /// + /// 后台处理方法的任务包装代理实现 + /// + class LocalHandlerProxy + { + /// + /// 构造方法 + /// + /// + public LocalHandlerProxy(AbsHandler _handler, Queue cascadeHandlers = null) + { + this.handler = _handler; + this.cascadeHandlers = cascadeHandlers; + doWorkTime = DateTime.Now; + } + /// + /// 后台任务执行方法的主体部分,异步执行代码段! + /// + /// + /// + public void worker_DoWork(object sender, DoWorkEventArgs e) + { + doWorkTime = DateTime.Now; + Thread.CurrentThread.Name = handler.GetType().Name; + //////////////////////// + List args = new List(); + if (e.Argument is Object[]) + { + args.AddRange((Object[])e.Argument); + } + else + args.Add(e.Argument); + BackgroundWorker worker = (BackgroundWorker)sender; + worker.ReportProgress(0); + e.Result = handler.doWork(worker, e.Cancel, args); + worker.ReportProgress(100); + } + /// + /// 后台任务执行结束,回调代码段 + /// + /// + /// + public void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + List args = new List(); + if (e.Result is Object[]) + { + args.AddRange((Object[])e.Result); + } + else + args.Add(e.Result); + BackgroundWorker worker = (BackgroundWorker)sender; + ////////////////////////////////////////// + handler.complete(worker, e.Cancelled, e.Error, args); + ////////////////////////////// + BGWorkerInvoker.removeWorker(worker); + } + /// + /// 后台任务执行结束后的串联执行任务队列的代理实现代码段 + /// + /// + /// + public void worker_cascadeProcess(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Cancelled || e.Error != null) + return; + //插队串联部分 + if (handler.cascadeHandlers() != null) + { + Queue nextHandlers = this.cascadeHandlers; + if (nextHandlers == null) + this.cascadeHandlers = handler.cascadeHandlers(); + if (nextHandlers != null) + { + foreach (AbsHandler hand in nextHandlers) + { + cascadeHandlers.Enqueue(hand); + } + } + } + //队头出列,提交执行任务池 + if (this.cascadeHandlers != null && this.cascadeHandlers.Count > 0) + { + AbsHandler nextHandler = cascadeHandlers.Dequeue(); + List args = new List(); + if (e.Result is Object[]) + { + args.AddRange((Object[])e.Result); + } + else + args.Add(e.Result); + BGWorkerInvoker.pushHandler(nextHandler, args, cascadeHandlers); + } + } + /// + /// 后台任务执行过程中的状态反馈代码段 + /// + /// + /// + public void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + List args = new List(); + if (e.UserState is Object[]) + { + args.AddRange((Object[])e.UserState); + } + else + args.Add(e.UserState); + BackgroundWorker worker = (BackgroundWorker)sender; + handler.progressChanged(worker, e.ProgressPercentage, args); + } + + /// + /// 获取任务代理包装的元处理器实例对象 + /// + /// + internal AbsHandler getHandler() + { + return handler; + } + /// + /// 获取任务代理包装的元处理器实例对象名称 + /// + /// + public string getProxyName() + { + return handler.GetType().Name; + } + /// + /// 返回运行累计时长 + /// 说明: + /// 1.以毫秒为单位 + /// 2.计算数值不排除异步运行完成后的存活时间 + /// + /// + public long getRunningTime() + { + TimeSpan span = DateTime.Now - doWorkTime; + return span.Ticks; + } + /// + /// 任务代理包装的元处理器实例对象 + /// + private AbsHandler handler; + /// + /// 等待执行的串联执行任务队列 + /// + private Queue cascadeHandlers = null; + /// + /// 用于标记任务执行的起始时间 + /// + private DateTime doWorkTime; + } +} diff --git a/IDCM/IDCM.Service.Common/GCMDAM/SignExecutor.cs b/IDCM/IDCM.Service.Common/GCMDAM/SignExecutor.cs index dd4143f..a962bbd 100644 --- a/IDCM/IDCM.Service.Common/GCMDAM/SignExecutor.cs +++ b/IDCM/IDCM.Service.Common/GCMDAM/SignExecutor.cs @@ -69,6 +69,7 @@ public static AuthInfo SignIn(string username, string password, bool autoLogin = auth.Username = username; auth.Password = password; auth.autoLogin = autoLogin; + auth.Timestamp = DateTime.Now.Ticks; } return auth; } diff --git a/IDCM/IDCM.Service/UIM/GCMItemsLoader.cs b/IDCM/IDCM.Service/UIM/GCMItemsLoader.cs index 750ad49..01f8179 100644 --- a/IDCM/IDCM.Service/UIM/GCMItemsLoader.cs +++ b/IDCM/IDCM.Service/UIM/GCMItemsLoader.cs @@ -71,6 +71,10 @@ private static void showDataItems(StrainListPage slp, DataGridView itemDGV, Dict DGVAsyncUtil.syncAddRow(itemDGV, null, dgvrIdx); loadedNoter.Add(valMap["id"], dgvrIdx); } + else if(dgvrIdx >= itemDGV.RowCount) + { + DGVAsyncUtil.syncAddRow(itemDGV, null, dgvrIdx); + } foreach (KeyValuePair entry in valMap) { //if itemDGV not contains Column of entry.key diff --git a/IDCM/IDCM/App.config b/IDCM/IDCM/App.config index 5a8a874..ec342d9 100644 --- a/IDCM/IDCM/App.config +++ b/IDCM/IDCM/App.config @@ -26,22 +26,22 @@ - + - - + + - - + + - - + + - - + + - - + + diff --git a/IDCM/IDCM/Forms/AboutDlg.cs b/IDCM/IDCM/Forms/AboutDlg.cs index da9db4c..2eb1552 100644 --- a/IDCM/IDCM/Forms/AboutDlg.cs +++ b/IDCM/IDCM/Forms/AboutDlg.cs @@ -14,6 +14,7 @@ public partial class AboutDlg : Form public AboutDlg() { InitializeComponent(); + setAboutText(); } private void button1_Click(object sender, EventArgs e) @@ -21,5 +22,13 @@ private void button1_Click(object sender, EventArgs e) if(!this.IsDisposed) this.Dispose(); } + + public void setAboutText() + { + this.version.Text = "IDCM v1.0(110)\n\nCopyright © All Rights Reserved"; + this.contact.Text = "Contact: jiahaiWu \n\n "; + this.email.Text = "Email:jiahaiwu@im.ac.cn\n\n"; + this.address.Text = "Address:Beijing Chaoyang District"; + } } } diff --git a/IDCM/IDCM/Forms/AboutDlg.designer.cs b/IDCM/IDCM/Forms/AboutDlg.designer.cs index 10ef286..097b2d1 100644 --- a/IDCM/IDCM/Forms/AboutDlg.designer.cs +++ b/IDCM/IDCM/Forms/AboutDlg.designer.cs @@ -30,13 +30,19 @@ private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutDlg)); this.button1 = new System.Windows.Forms.Button(); - this.pictureBox2 = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.version = new System.Windows.Forms.Label(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.WFCC = new System.Windows.Forms.Label(); + this.contact = new System.Windows.Forms.Label(); + this.address = new System.Windows.Forms.Label(); + this.email = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // // button1 // - this.button1.Location = new System.Drawing.Point(420, 242); + this.button1.Location = new System.Drawing.Point(100, 284); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; @@ -44,20 +50,86 @@ private void InitializeComponent() this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // - // pictureBox2 + // version // - this.pictureBox2.Location = new System.Drawing.Point(12, 12); - this.pictureBox2.Name = "pictureBox2"; - this.pictureBox2.Size = new System.Drawing.Size(330, 253); - this.pictureBox2.TabIndex = 2; - this.pictureBox2.TabStop = false; + this.version.AutoSize = true; + this.version.Location = new System.Drawing.Point(39, 87); + this.version.Name = "version"; + this.version.Size = new System.Drawing.Size(41, 12); + this.version.TabIndex = 1; + this.version.Text = "lable1"; + this.version.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(73, 148); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(131, 12); + this.linkLabel1.TabIndex = 2; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "http://www.wfcc.info/"; + // + // pictureBox1 + // + this.pictureBox1.Image = global::IDCM.Properties.Resources.gcm_logo; + this.pictureBox1.Location = new System.Drawing.Point(100, 12); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(66, 63); + this.pictureBox1.TabIndex = 3; + this.pictureBox1.TabStop = false; + // + // WFCC + // + this.WFCC.AutoSize = true; + this.WFCC.Location = new System.Drawing.Point(32, 148); + this.WFCC.Name = "WFCC"; + this.WFCC.Size = new System.Drawing.Size(35, 12); + this.WFCC.TabIndex = 4; + this.WFCC.Text = "WFCC:"; + // + // contact + // + this.contact.AutoSize = true; + this.contact.Location = new System.Drawing.Point(73, 179); + this.contact.Name = "contact"; + this.contact.Size = new System.Drawing.Size(41, 12); + this.contact.TabIndex = 5; + this.contact.Text = "label1"; + this.contact.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // address + // + this.address.AutoSize = true; + this.address.Location = new System.Drawing.Point(42, 238); + this.address.Name = "address"; + this.address.Size = new System.Drawing.Size(41, 12); + this.address.TabIndex = 6; + this.address.Text = "label1"; + this.address.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // email + // + this.email.AutoSize = true; + this.email.Location = new System.Drawing.Point(63, 211); + this.email.Name = "email"; + this.email.Size = new System.Drawing.Size(41, 12); + this.email.TabIndex = 7; + this.email.Text = "label1"; + this.email.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // AboutDlg // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(532, 288); - this.Controls.Add(this.pictureBox2); + this.ClientSize = new System.Drawing.Size(279, 344); + this.Controls.Add(this.email); + this.Controls.Add(this.address); + this.Controls.Add(this.contact); + this.Controls.Add(this.WFCC); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.version); this.Controls.Add(this.button1); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; @@ -65,14 +137,21 @@ private void InitializeComponent() this.Name = "AboutDlg"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "AboutIDCM"; - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); + this.PerformLayout(); } #endregion private System.Windows.Forms.Button button1; - private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.Label version; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label WFCC; + private System.Windows.Forms.Label contact; + private System.Windows.Forms.Label address; + private System.Windows.Forms.Label email; } } \ No newline at end of file diff --git a/IDCM/IDCM/Forms/LoginStatusDlg.Designer.cs b/IDCM/IDCM/Forms/LoginStatusDlg.Designer.cs index 6daedba..13eb899 100644 --- a/IDCM/IDCM/Forms/LoginStatusDlg.Designer.cs +++ b/IDCM/IDCM/Forms/LoginStatusDlg.Designer.cs @@ -35,6 +35,7 @@ private void InitializeComponent() this.button_singout = new System.Windows.Forms.Button(); this.label_noteSite = new System.Windows.Forms.Label(); this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.ok = new System.Windows.Forms.Button(); this.SuspendLayout(); // // linkLabel_uname @@ -72,7 +73,7 @@ private void InitializeComponent() // button_singout // this.button_singout.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.button_singout.Location = new System.Drawing.Point(232, 218); + this.button_singout.Location = new System.Drawing.Point(176, 218); this.button_singout.Name = "button_singout"; this.button_singout.Size = new System.Drawing.Size(82, 32); this.button_singout.TabIndex = 3; @@ -101,11 +102,23 @@ private void InitializeComponent() this.linkLabel2.TabStop = true; this.linkLabel2.Text = "http://gcm.wfcc.info/"; // + // ok + // + this.ok.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ok.Location = new System.Drawing.Point(279, 218); + this.ok.Name = "ok"; + this.ok.Size = new System.Drawing.Size(82, 32); + this.ok.TabIndex = 6; + this.ok.Text = "OK"; + this.ok.UseVisualStyleBackColor = true; + this.ok.Click += new System.EventHandler(this.ok_Click); + // // LoginStatusDlg // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(382, 278); + this.Controls.Add(this.ok); this.Controls.Add(this.linkLabel2); this.Controls.Add(this.label_noteSite); this.Controls.Add(this.button_singout); @@ -130,5 +143,6 @@ private void InitializeComponent() private System.Windows.Forms.Button button_singout; private System.Windows.Forms.Label label_noteSite; private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.Button ok; } } \ No newline at end of file diff --git a/IDCM/IDCM/Forms/LoginStatusDlg.cs b/IDCM/IDCM/Forms/LoginStatusDlg.cs index e6d5ebb..c02f620 100644 --- a/IDCM/IDCM/Forms/LoginStatusDlg.cs +++ b/IDCM/IDCM/Forms/LoginStatusDlg.cs @@ -30,5 +30,10 @@ private void button_singout_Click(object sender, EventArgs e) this.Close(); } + private void ok_Click(object sender, EventArgs e) + { + this.Close(); + } + } } diff --git a/IDCM/IDCM/Forms/TaskInfoDlg.cs b/IDCM/IDCM/Forms/TaskInfoDlg.cs index a53efc0..2670113 100644 --- a/IDCM/IDCM/Forms/TaskInfoDlg.cs +++ b/IDCM/IDCM/Forms/TaskInfoDlg.cs @@ -1,5 +1,6 @@ using IDCM.Data.Base; using IDCM.Service.Common; +using IDCM.Service.Utils; using System; using System.Collections.Generic; using System.ComponentModel; @@ -17,48 +18,40 @@ public partial class TaskInfoDlg : Form public TaskInfoDlg() { taskInfoMonitor.Interval = 1000; - taskInfoMonitor.Tick += OnLoadDataSet; + taskInfoMonitor.Tick += OnLoadTaskInfo; taskInfoMonitor.Start(); InitializeComponent(); } - private void loadDataSet() + /// + /// 加载任务信息 + /// + private void loadTaskInfo() { - dataGridView1.Columns.Clear(); - HandleRunInfo[] handRunInfoArray = DWorkMHub.getRunInfoList(); - DataTable dataTable = new DataTable(); - DataColumn firstColumn = new DataColumn("Name", typeof(string)); - DataColumn secondColumn = new DataColumn("Status", typeof(string)); - DataColumn thirdColumn = new DataColumn("RunTime", typeof(string)); - DataColumn fourthColumn = new DataColumn("Description", typeof(string)); - dataTable.Columns.Add(firstColumn); - dataTable.Columns.Add(secondColumn); - dataTable.Columns.Add(thirdColumn); - dataTable.Columns.Add(fourthColumn); + this.dataGridView1.Rows.Clear(); + HandleRunInfo[] handRunInfoArray = DWorkMHub.getRunInfoList(); foreach (HandleRunInfo handRunInfo in handRunInfoArray) { - if (true)//handRunInfo.handleType.Equals(typeof(Thread).Name) || handRunInfo.handleType.Equals(typeof(BackgroundWorker).Name) - { - DataRow dataRow = dataTable.NewRow(); - dataRow[0] = handRunInfo.HName; - dataRow[1] = handRunInfo.Status; - TimeSpan tspan = new TimeSpan(handRunInfo.RunTime); - string tspanDesc = String.Format("{0}h {1}min {2}sec",tspan.TotalHours.ToString("0"), tspan.Minutes, tspan.Seconds); - dataRow[2] = tspanDesc; - dataRow[3] = handRunInfo.Description; - dataTable.Rows.Add(dataRow); - } - + TimeSpan tspan = new TimeSpan(handRunInfo.RunTime); + string tspanDesc = String.Format("{0}h {1}min {2}sec", tspan.TotalHours.ToString("0"), tspan.Minutes, tspan.Seconds); + string[] values = new string[] { handRunInfo.HName, handRunInfo.Status, tspanDesc, handRunInfo.Description }; + if (isShowFrom) + DGVAsyncUtil.syncAddRow(this.dataGridView1, values, this.dataGridView1.RowCount); + else + { + if(!handRunInfo.handleType.Equals(typeof(Form).Name)) + DGVAsyncUtil.syncAddRow(this.dataGridView1, values, this.dataGridView1.RowCount); + } } - dataGridView1.DataSource = dataTable; - label1.Text = "Task Count:" + dataTable.Rows.Count; + label1.Text = "Task Count:" + this.dataGridView1.Rows.Count; } - private void TaskInfoDlg_Shown(object sender, EventArgs e) - { - loadDataSet(); - } - private void OnLoadDataSet(object sender, EventArgs e) + /// + /// 定时刷新任务信息事件 + /// + /// + /// + private void OnLoadTaskInfo(object sender, EventArgs e) { - loadDataSet(); + loadTaskInfo(); } /// @@ -83,7 +76,18 @@ private void dataGridView1_RowPostPaint_1(object sender, DataGridViewRowPostPain TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), this.dataGridView1.RowHeadersDefaultCellStyle.Font, rectangle, this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right); this.dataGridView1.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders); + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + this.isShowFrom = this.checkBox1.Checked; } + private bool isShowFrom = false; + + private void TaskInfoDlg_FormClosing(object sender, FormClosingEventArgs e) + { + taskInfoMonitor.Stop(); + } } } diff --git a/IDCM/IDCM/Forms/TaskInfoDlg.designer.cs b/IDCM/IDCM/Forms/TaskInfoDlg.designer.cs index 3a9a433..a28f486 100644 --- a/IDCM/IDCM/Forms/TaskInfoDlg.designer.cs +++ b/IDCM/IDCM/Forms/TaskInfoDlg.designer.cs @@ -34,13 +34,18 @@ private void InitializeComponent() System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TaskInfoDlg)); this.label1 = new System.Windows.Forms.Label(); this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.Name = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Status = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.RunTime = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Description = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); this.SuspendLayout(); // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(180, 9); + this.label1.Location = new System.Drawing.Point(150, 9); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(41, 12); this.label1.TabIndex = 1; @@ -63,6 +68,11 @@ private void InitializeComponent() dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Name, + this.Status, + this.RunTime, + this.Description}); this.dataGridView1.Location = new System.Drawing.Point(1, 39); this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.ReadOnly = true; @@ -73,18 +83,53 @@ private void InitializeComponent() this.dataGridView1.TabIndex = 0; this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint_1); // + // Name + // + this.Name.HeaderText = "Name"; + this.Name.Name = "Name"; + this.Name.ReadOnly = true; + // + // Status + // + this.Status.HeaderText = "Status"; + this.Status.Name = "Status"; + this.Status.ReadOnly = true; + // + // RunTime + // + this.RunTime.HeaderText = "RunTime"; + this.RunTime.Name = "RunTime"; + this.RunTime.ReadOnly = true; + // + // Description + // + this.Description.HeaderText = "Description"; + this.Description.Name = "Description"; + this.Description.ReadOnly = true; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(251, 8); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(186, 16); + this.checkBox1.TabIndex = 2; + this.checkBox1.Text = "Whether to display the form"; + this.checkBox1.UseVisualStyleBackColor = true; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // // TaskInfoDlg // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(438, 282); + this.Controls.Add(this.checkBox1); this.Controls.Add(this.label1); this.Controls.Add(this.dataGridView1); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; - this.Name = "TaskInfoDlg"; this.Text = "Task Info"; - this.Shown += new System.EventHandler(this.TaskInfoDlg_Shown); + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.TaskInfoDlg_FormClosing); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -95,6 +140,11 @@ private void InitializeComponent() private System.Windows.Forms.Label label1; private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.DataGridViewTextBoxColumn Name; + private System.Windows.Forms.DataGridViewTextBoxColumn Status; + private System.Windows.Forms.DataGridViewTextBoxColumn RunTime; + private System.Windows.Forms.DataGridViewTextBoxColumn Description; } diff --git a/IDCM/IDCM/Forms/TaskInfoDlg.resx b/IDCM/IDCM/Forms/TaskInfoDlg.resx index 2b7bb07..7058017 100644 --- a/IDCM/IDCM/Forms/TaskInfoDlg.resx +++ b/IDCM/IDCM/Forms/TaskInfoDlg.resx @@ -117,6 +117,18 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True + + + True + + + True + + + True + diff --git a/IDCM/IDCM/ViewManager/GCMViewManager.cs b/IDCM/IDCM/ViewManager/GCMViewManager.cs index 7f320a7..3b5d43d 100644 --- a/IDCM/IDCM/ViewManager/GCMViewManager.cs +++ b/IDCM/IDCM/ViewManager/GCMViewManager.cs @@ -367,10 +367,6 @@ private void OnGCMViewExportData(object sender, IDCMViewEventArgs e) if (handler != null) DWorkMHub.callAsyncHandle(handler); } - internal void exportData(ExportType etype, string fpath,bool exportStrainTree) - { - - } //复制 private void OnGCMViewCopyClipboard(object sender, IDCMViewEventArgs e)