⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.cs

📁 c#的多线程采集源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
                    if (DataSourceConfig != null)
                    {
                        //根据DataSourceConfig.DataSourceId判断此数据源是否进行了详细配置
                        DataSet ParticularConfig = new DataSet();
                        ParticularConfig = Common.GetParticularConfigList("DataSourceId=" + DataSourceConfig.DataSourceId);
                        if (ParticularConfig != null)
                        {
                            if (ParticularConfig.Tables.Count > 0)
                            {
                                if (ParticularConfig.Tables[0].Rows.Count > 0)
                                {
                                    DataEntity.Gather_Period Period = new Gather_Period();
                                    Period = Common.GetPeriodModel(DataSourceConfig.PeriodId);

                                    if (Period != null)
                                    {
                                        DataEntity.Entity_GatherThread GatherThread = new Entity_GatherThread();
                                        GatherThread.MgId = int.Parse(this.treeView1.SelectedNode.Parent.Tag.ToString());
                                        GatherThread.MgName = this.treeView1.SelectedNode.Parent.Text.ToString();
                                        GatherThread.CourseManageId = DataSourceConfig.DataSourceId.ToString();
                                        GatherThread.DataSourceId = DataSourceConfig.DataSourceId;
                                        GatherThread.DataSourceName = DataSourceConfig.DataSourceName;
                                        GatherThread.EndTime = DateTime.Parse(DateTime.Today.ToString("yyyy-MM-dd") + " " + Period.EndTime);
                                        GatherThread.NextTime = DateTime.Parse(DateTime.Today.ToString("yyyy-MM-dd") + " " + Period.TimeGather);
                                        GatherThread.OneFlag = true;
                                        GatherThread.PeriodGather = Period.PeriodGather;
                                        GatherThread.PeriodId = Period.PeriodId.ToString();
                                        GatherThread.StartTime = DateTime.Parse(DateTime.Today.ToString("yyyy-MM-dd") + " " + Period.StartTime);
                                        GatherThread.StateId = "2";
                                        GatherThread.StateName = "等待采集";

                                        //将新增的数据源的采集加入采集队列
                                        alMsgList.Add(GatherThread);

                                        //更新采集列表
                                        DataBindGridView();
                                    }
                                    else
                                    {
                                        MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":没有找到该数据源的详细采集周期设置,可能已经被移除,请设置采集周期后重试!", "警告", MessageBoxButtons.OK);
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":没有找到该数据源的详细配置,可能已经被移除,请设置详细配置后重试!", "警告", MessageBoxButtons.OK);
                                }
                            }
                            else
                            {
                                MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":没有找到该数据源的详细配置,可能已经被移除,请设置详细配置后重试!", "警告", MessageBoxButtons.OK);
                            }
                        }
                        else
                        {
                            MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":没有找到该数据源的详细配置,可能已经被移除,请设置详细配置后重试!", "警告", MessageBoxButtons.OK);
                        }


                    }
                    else
                    {
                        MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":该数据源没有设置采集周期,请设置采集周期后重试!", "警告", MessageBoxButtons.OK);
                    }
                }
                else
                {
                    MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":已加入采集队列!", "警告", MessageBoxButtons.OK);
                }
            }
        }
        /// <summary>
        /// 判断DataSourceID是否已加入到采集队列
        /// </summary>
        /// <param name="DataSourceID">数据源ID</param>
        /// <returns></returns>
        private bool CheckDataSourceIDInMsgList(int DataSourceID)
        {
            bool Exist = false;

            if (this.alMsgList != null)
            {
                foreach (object obj in alMsgList)
                {
                    Entity_GatherThread GatherThread = new Entity_GatherThread();
                    GatherThread = (Entity_GatherThread)obj;

                    if (GatherThread.DataSourceId == DataSourceID)
                    {
                        Exist = true;
                        break;
                    }
                }
            }

            return Exist;
        }

        #endregion       

        #region 退出系统或关闭系统事件
        /// <summary>
        /// 退出按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ExitApplication_Click(object sender, EventArgs e)
        {
            thread.Abort();
            Application.Exit();
        }

        /// <summary>
        /// 窗体关闭事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Index_FormClosed(object sender, FormClosedEventArgs e)
        {
            thread.Abort();
        }
        #endregion

        #region 菜单事件--信息类别相关
        /// <summary>
        /// 添加信息类别
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddMessage_Click(object sender, EventArgs e)
        {
            MessageManage messageManage = new MessageManage("", this.treeView1.SelectedNode.Tag.ToString(), 0);
            messageManage.ShowDialog();
        }

        private void EditMessage_Click(object sender, EventArgs e)
        {
            MessageManage messageManage = new MessageManage(this.treeView1.SelectedNode.Tag.ToString(), "", 1);
            messageManage.ShowDialog();
        }

        /// <summary>
        /// 删除信息类别(同时删除该信息类别的所有子类及子类信息配置的数据源)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeleteMessage_Click(object sender, EventArgs e)
        {
            int Num = Common.DeleteMessage(int.Parse(this.treeView1.SelectedNode.Tag.ToString()));

            if (Num != 1)
            {
                MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":该信息类别删除失败,请与系统管理员联系!", "警告", MessageBoxButtons.OK);
                return;
            }

            //删除成功后,重新绑定左侧的树型控件
            ReSetTreeView();
        }
        #endregion

        #region 菜单事件--数据源相关
        /// <summary>
        /// 添加数据源
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddDataSource_Click(object sender, EventArgs e)
        {
            DataSourceManage datasourceManage = new DataSourceManage();
            datasourceManage.MgID = int.Parse(this.treeView1.SelectedNode.Tag.ToString());
            datasourceManage.ShowDialog();
        }

        /// <summary>
        /// 编辑数据源
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EditDataSourceConfig_Click(object sender, EventArgs e)
        {
            DataSourceManage datasourceManage = new DataSourceManage();//("", this.treeView1.SelectedNode.Tag.ToString(), 0);
            datasourceManage.DataSourceId = int.Parse(this.treeView1.SelectedNode.Tag.ToString());
            datasourceManage.ShowDialog();
        }

        /// <summary>
        /// 删除数据源
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeleteDataSourceConfig_Click(object sender, EventArgs e)
        {
            int Num = Common.DeleteDataSourceConfig(int.Parse(this.treeView1.SelectedNode.Tag.ToString()));

            if (Num != 1)
            {
                MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":该数据源删除失败,请与系统管理员联系!", "警告", MessageBoxButtons.OK);
                return;
            }

            //删除成功后,重新绑定左侧的树型控件
            ReSetTreeView();
        }
        #endregion

        #region 菜单事件--采集周期相关
        /// <summary>
        /// 编辑采集周期
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EditPeriod_Click(object sender, EventArgs e)
        {
            Gather_DataSourceConfig DataSourceConfig = new Gather_DataSourceConfig();
            DataSourceConfig = Common.GetDataSourceConfig(int.Parse(this.treeView1.SelectedNode.Tag.ToString()));

            //将DataSourceConfig.PeriodId传至周期编辑窗体,以供编辑
            PeriodManage periodManage = new PeriodManage();
            periodManage.PeriodId = DataSourceConfig.PeriodId;
            periodManage.DataSourceId = DataSourceConfig.DataSourceId;
            periodManage.ShowDialog();
        }

        /// <summary>
        /// 删除数据源的采集周期,这里只是将DataSourceConfig表中的Period字段置0,并不删除Period表中的数据,Period表中的数据在周期管理中,提供自动清除事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeletePeriod_Click(object sender, EventArgs e)
        {
            Gather_DataSourceConfig DataSourceConfig = new Gather_DataSourceConfig();
            DataSourceConfig = Common.GetDataSourceConfig(int.Parse(this.treeView1.SelectedNode.Tag.ToString()));

            DataSourceConfig.PeriodId = 0;

            int Num = Common.UpdateDataSourceConfig(DataSourceConfig);

            if (Num != 1)
            {
                MessageBox.Show("\"" + this.treeView1.SelectedNode.Text + "\":该数据源的采集周期删除失败,请与系统管理员联系!", "警告", MessageBoxButtons.OK);
                return;
            }
        }

        /// <summary>
        /// 为数据源新设置采集周期
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddPeriod_Click(object sender, EventArgs e)
        {
            Gather_DataSourceConfig DataSourceConfig = new Gather_DataSourceConfig();
            DataSourceConfig = Common.GetDataSourceConfig(int.Parse(this.treeView1.SelectedNode.Tag.ToString()));

            //将DataSourceConfig.PeriodId传至周期编辑窗体,以供编辑
            PeriodManage periodManage = new PeriodManage();
            periodManage.DataSourceId = int.Parse(this.treeView1.SelectedNode.Tag.ToString());
            periodManage.ShowDialog();
        }
        #endregion

        #region 绑定采集状态列表GridView

        /// <summary>
        /// 监控采集状态
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            DataBindGridView();
        }
        
        private void DataBindGridView()
        {
            DataTable dt = new DataTable("GatherState");
            string[] ColumnName = {"信息编号","信息名称","数据源编号","数据源名称","下次采集时间","采集周期编号","采集状态"};

            for (int i = 0; i < ColumnName.Length; i++)
            {
                dt.Columns.Add(ColumnName[i].ToString());
            }

            if (this.alMsgList != null)
            {
                foreach (object obj in alMsgList)
                {
                    Entity_GatherThread GatherThread = new Entity_GatherThread();
                    GatherThread = (Entity_GatherThread)obj;

                    DataRow dr = dt.NewRow();
                    dr[0] = GatherThread.MgId;
                    dr[1] = GatherThread.MgName;
                    dr[2] = GatherThread.DataSourceId;
                    dr[3] = GatherThread.DataSourceName;
                    dr[4] = GatherThread.NextTime;
                    dr[5] = GatherThread.PeriodId;
                    dr[6] = GatherThread.StateName;

                    dt.Rows.Add(dr);                
                }
            }

            this.dataGridView1.DataSource = dt.DefaultView;
        }

        #endregion        

        #region 停止某类数据源的采集进程
        /// <summary>
        /// 停止某类数据源的采集进程:首先点击“停止监控”按钮,选择监控列表中需要停止采集的进程,点击“停止采集”按钮即可。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void StopGatherButton_Click(object sender, EventArgs e)
        {
            if (this.dataGridView1.CurrentRow != null)
            {
                int Index = this.dataGridView1.CurrentRow.Index;
                this.alMsgList.RemoveAt(Index);

                this.timer1.Enabled = true;
            }
        }

        /// <summary>
        /// 监控按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TimeControl_Click(object sender, EventArgs e)
        {
            if (this.timer1.Enabled)
            {
                this.timer1.Enabled = false;
                this.TimeControl.Text = "开启监控";
            }
            else
            {
                this.timer1.Enabled = true;
                this.TimeControl.Text = "停止监控";
            }
        }

        #endregion

        #region 刷新树控件

        /// <summary>
        /// 刷新树控件
        /// </summary>
        public void RefreshTreeView()
        {
            this.treeView1.Nodes.Clear();

            BindNode(this.treeView1.Nodes, "0");

            this.treeView1.ExpandAll();
        }

        #endregion
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -