Exemple #1
0
        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);
                                    }
                                }
                            }
                        }
                    }));
                }
            }
        }
Exemple #2
0
 private void Manager_MessageNotify(object sender, MessageNotifyEventArgs e)
 {
     ReportMessage(e);
 }