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);
                }

            }

  • 相关阅读:
    apache安全—用户访问控制
    hdu 3232 Crossing Rivers 过河(数学期望)
    HDU 5418 Victor and World (可重复走的TSP问题,状压dp)
    UVA 11020 Efficient Solutions (BST,Splay树)
    UVA 11922 Permutation Transformer (Splay树)
    HYSBZ 1208 宠物收养所 (Splay树)
    HYSBZ 1503 郁闷的出纳员 (Splay树)
    HDU 5416 CRB and Tree (技巧)
    HDU 5414 CRB and String (字符串,模拟)
    HDU 5410 CRB and His Birthday (01背包,完全背包,混合)
  • 原文地址:https://www.cnblogs.com/lvlaozf/p/8409292.html
Copyright © 2011-2022 走看看