使用多线程处理弹出"提示气泡"任务

  1. 01  private void timer1_Tick(object sender, EventArgs e)  
  2. 02  {  
  3. 03      //创建一个新的子线程,用于检索和提示数据,以减轻主线程的压力  
  4. 04      Thread th = new Thread(  
  5. 05          () => 
  6. 06          {  
  7. 07              Invoke(  
  8. 08                  (MethodInvoker)(() =>       //在当前窗体的线程上执行指定的委托  
  9. 09                     {  
  10. 10                          int intDays;        //存储提前天数  
  11. 11                          OleDbDataAdapter oleDa = new OleDbDataAdapter("Select Days from tb_CueSetting", oleConn);                           //创建实例,读取提前天数  
  12. 12                          DataTable dt = new DataTable();     //创建DataTable实例  
  13. 13                          oleDa.Fill(dt);     //把数据写入DataTable实例中  
  14. 14                          //获取提前天数  
  15. 15                          intDays = Convert.ToInt32(dt.Rows[0][0]);   
  16. 16                          //创建动态SQL字符串,读取将要执行的计划信息  
  17. 17                          StringBuilder sb = new StringBuilder(" Select PlanTitle from tb_Plan Where ");  
  18. 18                          //过滤日期符合查询条件的记录  
  19. 19                          string strSql = " DoFlag = '0' and   (format(ExecuteTime,'yyyy-mm-dd') >= '" + DateTime.Today.ToString("yyyy-MM-dd") + "' and format(ExecuteTime,'yyyy-mm-dd') <= '" + DateTime.Today.AddDays(intDays).ToString("yyyy-MM-dd") + "')";  
  20. 20                          sb.Append(strSql);  //追加字符串  
  21. 21                          //得到新的OleDbDataAdapter实例  
  22. 22                          oleDa = new OleDbDataAdapter(sb.ToString(), oleConn);  
  23. 23                          oleDa.Fill(dt);     //把数据写入DataTable实例中  
  24. 24                          sb.Clear();         //清空动态字符串  
  25. 25                          foreach (DataRow dr in dt.Rows)//遍历数据行,追加多条计划信息  
  26. 26                          {  
  27. 27                              //追加字符串(包括一个换行符)  
  28. 28                              sb.Append(dr["PlanTitle"].ToString() + Environment.NewLine);  
  29. 29                          }  
  30. 30                          //若存在将要执行的计划  
  31. 31                          if (!String.IsNullOrEmpty(sb.ToString().Trim()))  
  32. 32                          {  
  33. 33                              string strTemp = string.Empty;  //定义存储提示信息的字符串变量  
  34. 34                              if (intDays == 0)       //若是当天内  
  35. 35                              {  
  36. 36                                  strTemp = "今天有以下未执行的计划任务:";  
  37. 37                              }  
  38. 38                              else                //若不是当天,而是以后几天内  
  39. 39                              {   
  40. 40                                  strTemp =  "未来" + intDays + "天内有以下未执行的计划任务:";  
  41. 41                              }  
  42. 42                              this.notifyIcon1.ShowBalloonTip(1000, "计划提示:",strTemp + sb.ToString() + "详细情况请单击托盘图标!", ToolTipIcon.Info);  //弹出提示气泡,显示1秒钟  
  43. 43                          }  
  44. 44                          else                    //若不存在将要执行的计划  
  45. 45                          {  
  46. 46                              string strTemp = string.Empty;                                                                  //定义存储提示信息的字符串变量  
  47. 47                              if (intDays == 0)       //若是当天内  
  48. 48                              {  
  49. 49                                  strTemp = "今天无未执行的计划任务:";  
  50. 50                              }  
  51. 51                              else                //若是未来几天内  
  52. 52                              {  
  53. 53                                  strTemp = "未来" + intDays + "天内无未执行的计划任务:";  
  54. 54                              }  
  55. 55                              this.notifyIcon1.ShowBalloonTip(1000, "计划提示:", strTemp + "\n详细情况请单击托盘图标!", ToolTipIcon.Info);       //弹出提示气泡,显示1秒钟  
  56. 56                          }  
  57. 57                      }));  
  58. 58          });  
  59. 59      th.IsBackground = true;                     //设置新的子线程在后台执行  
  60. 60      th.Start();                             //启动新的子线程  
  61. 61  }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值