//创建一个队列 //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(); }); //} } }
/// <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); } }