Exemple #1
0
        //创建一个队列
        //public static Queue myQ = new Queue();
        #endregion


        public MainForm()
        {
            //CProtocolEventManager.AddTRUEvent += new Hydrology.DataMgr.CProtocolEventManager.MyDelegate3(form_MyEvent);
            //myTimer1.Tick += new EventHandler(TimerEventProcessor);
            //myTimer1.Interval = 1;
            //myTimer1.Enabled = true;
            //myTimer1.Start();

            m_timer_gsm.Tick    += new EventHandler(EH_Timer_gsm);
            m_timer_gsm.Interval = 1 * 60 * 1000;
            m_timer_gsm.Enabled  = true;
            m_timer_gsm.Start();
            //取得当前时间
            DateTime timeBegin = DateTime.Now;
            //进入载入界面
            CWelcomePage page = new CWelcomePage();

            //载入界面居中
            page.StartPosition = FormStartPosition.CenterScreen;
            page.ShowDialog();

            InitializeComponent();

            Mainthread = Thread.CurrentThread;//获取主线程
            try
            {
                // 如果数据库配置失败, 初始化数据管理,此处可考虑显示数据库配置界面等等
                //1103
                //bool CDBDataMgrflag = CDBDataMgr.Instance.Init();
                //bool CDBSoilDataMgrflag = CDBSoilDataMgr.Instance.Init();
                //if(!CDBDataMgrflag || !CDBSoilDataMgrflag)
                if (!CDBDataMgr.Instance.Init() || (!CDBSoilDataMgr.Instance.Init()))
                {
                    var msgboxResult = MessageBox.Show("数据库配置错误,请重新配置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    if (DialogResult.OK == msgboxResult)
                    {
                        ;
                    }
                    // 关闭欢迎界面
                    //page.Invoke((Action)delegate { page.Close(); });
                    // 此处抛出异常,用于终止程序,此时程序无法工作,谨慎处理
                    //throw new Exception("数据库配置错误"); // 抛出异常
                }

                //  系统启动顺序:先加载数据,然后再加载页面

                //  读取配置文件,初始化北斗卫星,短信,GPRS参数
                //XmlDocManager.Instance.ReadFromXml();

                InitCustomerControls();
                //窗体最大化
                this.WindowState = FormWindowState.Maximized;

                m_statusStrip.ForeColor = Color.White;
                m_statusLable.Text      = "";
                // 设置分割区域宽度
                splitContainer1.SplitterWidth = 6;
                splitContainer2.SplitterWidth = 8;

                // 初始化定时器
                //m_timer = new System.Windows.Forms.Timer()
                //{
                //    Enabled = false,
                //    Interval = 30 * 60 * 1000// 30分钟
                //};
                m_timer.Tick += new EventHandler(EH_Timer);
                // m_timer_gsm.Tick += new EventHandler(EH_Timer_gsm);

                this.CopyRightLabel.Text = "版权所有:湖北一方科技发展有限责任公司 V1.0 - SYJ    BeiDou数据接收:" + num2;
                // this.CopyRightLabel.Text = Thread.CurrentThread.ManagedThreadId.ToString();
                this.lblSysTimer.Alignment = ToolStripItemAlignment.Right;
                //  初始化系统时间定时器
                m_sysTimer = new System.Windows.Forms.Timer()
                {
                    Enabled  = true,
                    Interval = 1000
                };
                m_sysTimer.Tick += (s, e) =>
                {
                    this.lblSysTimer.Text = "时间:  " + DateTime.Now.ToString();
                };
                m_sysTimer.Start();

                InitMainFormMenu();
                CreateMsgBinding();

                ChangeUserMode(false);

                CPortDataMgr.Instance.InitGsms();
                CPortDataMgr.Instance.InitBeidouNormal();
                CPortDataMgr.Instance.StartGprs();
                CPortDataMgr.Instance.StartHDGprs();
                CPortDataMgr.Instance.StartTransparen();
                CPortDataMgr.Instance.InitBeidou500();

                // 计算启动时间,写入日志文件
                TimeSpan span = DateTime.Now - timeBegin;
                CSystemInfoMgr.Instance.AddInfo(string.Format("系统启动正常, 用时 {0} s", span.TotalSeconds.ToString("0.00")), DateTime.Now);

                //  显示实时数据表
                CDBDataMgr.Instance.SentRTDMsg();
                //  显示实时墒情表
                CDBSoilDataMgr.Instance.SendSoilDataMsg();

                CDBDataMgr.Instance.initZhongaoFile();
                // 生成测试数据
                // GenerateTestData();
            }
            catch (Exception exp)
            {
                CSystemInfoMgr.Instance.AddInfo(exp.ToString());
                //throw exp; //再次抛出异常
            }
            finally
            {
                //if (this.IsHandleCreated)
                //{
                // 关闭欢迎界面
                page.Invoke((Action) delegate { page.Close(); });
                //}
            }
        }
Exemple #2
0
        /// <summary>
        /// 定时器时间,用于控制用户登陆时长,避免忘记退出等消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        #region 事件处理

        /// <summary>
        /// 关闭页面事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EHClosing(object sender, FormClosingEventArgs e)
        {
            // 只有管理员才能关闭页面
            if (!m_bIsInAdministrator)
            {
                e.Cancel = true;
                MessageBox.Show("权限不够");
                return;
            }
            // 再次提示
            DialogResult result = MessageBox.Show("确定退出系统", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (DialogResult.No == result)
            {
                e.Cancel = true;
                return;
            }

            CWelcomePage page = new CWelcomePage();

            page.SetClosedPicture();
            page.StartPosition = FormStartPosition.CenterScreen;
            page.Show();
            try
            {
                // 停止模拟线程
                if (m_listSimulators != null)
                {
                    foreach (Thread t in m_listSimulators)
                    {
                        try
                        {
                            t.Abort();
                        }
                        catch (System.Exception ex)
                        {
                            Debug.WriteLine(ex.ToString());
                        }
                    }
                }
                // 停止端口以及串口服务
                CPortDataMgr.Instance.CloseAll();

                // 停止数据库服务
                CDBDataMgr.Instance.StopDBService();
                CDBSoilDataMgr.Instance.StopDBService();

                // 写入停止信息
                CSystemInfoMgr.Instance.AddInfo("退出系统");

                // 停止系统信息记录服务
                CSystemInfoMgr.Instance.Close();
                System.Environment.Exit(0);
                //Thread.Sleep(2000);
            }
#pragma warning disable CS0168 // 声明了变量“epx”,但从未使用过
            catch (Exception epx)
#pragma warning restore CS0168 // 声明了变量“epx”,但从未使用过
            {
                System.Environment.Exit(0);
            }
            finally
            {
                page.Close();
                System.Environment.Exit(0);
            }
        }