zoukankan      html  css  js  c++  java
  • 第一次线程使用经验总结

     1.线程声明。

    2. 线程使用lamda表达式。

    3.使用客户端的全局变量。static的可以修改。

    4.页面移除时会触发一个closed事件。从此事件中修改全局变量。

    5.使得线程内的工作不再发生,只是处理完现在的线程的工作。 

    6.线程内方法传入bool型变量,相对于此方法,就是全局变量了。

    7.通过控制此方法传入的变量,控制是否可以再执行获取数据,因为在处理循环的时候可能时间比较 长,要求是只有处理完了才能添加工作。

    8.线程使用 后台线程,页面完成时,线程自己处理完工作也要销毁。

    9.真的全局变量,是根据cloed进行处理的,所以当closed事件发生时,把全局变量修改后,方法中的循环直接跳出,不在执行后续任务。

    线程也会相应的销毁了。

       System.Threading.Thread thread = new System.Threading.Thread(() =>

                {
                  
                    while (Constant.IsSpeakerText)
                    {
                        if (!this.ContainsFocus)
                        {
                            flag = true;
                            Gdky.Manage.Measurement.M_ThreadEx.MeasurementAlarmSpeaker(ref flag);
                        }
                        else
                        {
                            flag = false;
                        }
                        System.Threading.Thread.Sleep(20 * 1000);
                    }

                });
                thread.IsBackground = true;
                thread.Start();

      public static void MeasurementAlarmSpeaker(ref bool flag)
            {
               
                try
                {
                  
                    if (flag == true)
                    {
                        DataSet ds = M_ServiceObj.M_AlarmVoice_GetData(Constant.PwdCode, "", ref strError);
                        if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                        {
                            flag = false;
                            DataTable dt = ds.Tables[0];
                            foreach (DataRow dr in dt.Rows)
                            {
                                string Message = string.Format("{0}计量间在{1}发生{2}", dr["Name"].ToString(), DateTime.Parse(dr["AlarmTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"), dr["AlamTypeStr"].ToString());
                                SpeakHelper.Read(Message);
                                if (!Constant.IsSpeakerText)
                                    break;

                            }
                            flag = true;

                        }
                    }

                }
                catch (Exception ex)
                {
                    Gdky.Windows.Helper.LogHelper.WriteLog(ex);
                }

            }

  • 相关阅读:
    response.redirect on asp.net is a 302 jump action
    什么吃掉了我的硬盘?
    百度流量统计将会影响搜索的排名
    发邮件 python
    bottle template usage
    想提神,喝中药,咖啡可可没用的
    企业退信的常见问题?
    用UnixBench测试VPS性能 判别是否值得购买
    域名注册及免费空间and企业邮箱
    LNMP一键安装包是什么?
  • 原文地址:https://www.cnblogs.com/lvlaozf/p/8409292.html
Copyright © 2011-2022 走看看