void ReportMessage(MessageNotifyEventArgs e) { switch (e.Type) { case MessageNotifyTypes.Info: break; case MessageNotifyTypes.AddTask: treeViewTarget.Invoke(new Action(() => { TreeNode node = new TreeNode() { Name = e.TaskUnit.TargetUrl, Text = e.TaskUnit.Target, ImageKey = "web" }; treeViewTarget.Nodes["nodeWaiting"].Nodes.Add(node); })); break; case MessageNotifyTypes.AddTaskFailed: break; case MessageNotifyTypes.TaskStarted: treeViewTarget.Invoke(new Action(() => { var node = treeViewTarget.Nodes["nodeWaiting"].Nodes[e.TaskUnit.TargetUrl]; treeViewTarget.Nodes["nodeWaiting"].Nodes.Remove(node); treeViewTarget.Nodes["nodeRunning"].Nodes.Add(node); })); break; case MessageNotifyTypes.TaskFinished: treeViewTarget.Invoke(new Action(() => { if (treeViewTarget.Nodes["nodeFinished"].Nodes.ContainsKey(e.TaskUnit.TargetUrl)) { return; } var node = treeViewTarget.Nodes["nodeRunning"].Nodes[e.TaskUnit.TargetUrl]; treeViewTarget.Nodes["nodeRunning"].Nodes.Remove(node); treeViewTarget.Nodes["nodeFinished"].Nodes.Add(node); })); break; case MessageNotifyTypes.TaskFailed: treeViewTarget.Invoke(new Action(() => { var node = treeViewTarget.Nodes["nodeRunning"].Nodes[e.TaskUnit.TargetUrl]; treeViewTarget.Nodes["nodeRunning"].Nodes.Remove(node); treeViewTarget.Nodes["nodeFailed"].Nodes.Add(node); })); break; default: break; } treeViewTarget.Invoke(new Action(() => { treeViewTarget.Nodes["nodeWaiting"].Text = string.Format("{0} [{1}]", treeViewTarget.Nodes["nodeWaiting"].Text.Split(' ')[0], treeViewTarget.Nodes["nodeWaiting"].Nodes.Count); treeViewTarget.Nodes["nodeRunning"].Text = string.Format("{0} [{1}]", treeViewTarget.Nodes["nodeRunning"].Text.Split(' ')[0], treeViewTarget.Nodes["nodeRunning"].Nodes.Count); treeViewTarget.Nodes["nodeFinished"].Text = string.Format("{0} [{1}]", treeViewTarget.Nodes["nodeFinished"].Text.Split(' ')[0], treeViewTarget.Nodes["nodeFinished"].Nodes.Count); treeViewTarget.Nodes["nodeFailed"].Text = string.Format("{0} [{1}]", treeViewTarget.Nodes["nodeFailed"].Text.Split(' ')[0], treeViewTarget.Nodes["nodeFailed"].Nodes.Count); })); listBoxStatus.Invoke(new Action(() => { string message = string.Format("[{0}] [{1}] {2}", e.Time.ToString("yyyy-MM-dd HH:mm:ss"), e.GetTypeDescrition(), e.Message); listBoxStatus.Items.Add(message); })); //加载结果到列表 foreach (var taskKey in manager.Tasks.Keys) { var task = manager.Tasks[taskKey]; if (task.Status == RunningStatus.Finished) { var info = task.TargetInfo; treeViewTarget.Invoke(new Action(() => { foreach (var dbName in info.Databases.Keys) { if (!treeViewTarget.Nodes["nodeFinished"].Nodes[task.TargetUrl].Nodes.ContainsKey(dbName)) { var node = new TreeNode() { Text = dbName, Name = dbName, ImageKey = "data" }; treeViewTarget.Nodes["nodeFinished"].Nodes[task.TargetUrl].Nodes.Add(node); } foreach (var tableName in info.Databases[dbName].Tables.Keys) { if (!treeViewTarget.Nodes["nodeFinished"].Nodes[task.TargetUrl].Nodes[dbName].Nodes.ContainsKey(tableName)) { var node = new TreeNode() { Text = $"{tableName} [{info.Databases[dbName].Tables[tableName].Count}]", Name = tableName, ImageKey = "table", Tag = "table" }; treeViewTarget.Nodes["nodeFinished"].Nodes[task.TargetUrl].Nodes[dbName].Nodes.Add(node); } foreach (var colName in info.Databases[dbName].Tables[tableName].Columns.Keys) { if (!treeViewTarget.Nodes["nodeFinished"].Nodes[task.TargetUrl].Nodes[dbName].Nodes[tableName].Nodes.ContainsKey(colName)) { var node = new TreeNode() { Text = $"{colName} [{info.Databases[dbName].Tables[tableName].Columns[colName].Type}]", Name = colName, ImageKey = "field" }; treeViewTarget.Nodes["nodeFinished"].Nodes[task.TargetUrl].Nodes[dbName].Nodes[tableName].Nodes.Add(node); } } } } })); } } }
private void Manager_MessageNotify(object sender, MessageNotifyEventArgs e) { ReportMessage(e); }