博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一次线程使用经验总结
阅读量:7219 次
发布时间:2019-06-29

本文共 1359 字,大约阅读时间需要 4 分钟。

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

        }

 

转载于:https://www.cnblogs.com/lvlaozf/p/8409292.html

你可能感兴趣的文章
SB Admin 2 学习笔记1
查看>>
android Adapter剖析理解
查看>>
【纪中集训2019.3.20】铁路
查看>>
windos 2008 vista 下的端口范围改变
查看>>
request
查看>>
String
查看>>
解决新版的vue-cli后无法通过ip访问vue项目
查看>>
OSError: image file is truncated (28 bytes not processed)
查看>>
Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)
查看>>
Swift 循环、数组 字典的遍历
查看>>
Win7屏幕键盘 在哪 使用
查看>>
shodan API 获取IP开放端口
查看>>
Discuz NT 架构剖析之Config机制
查看>>
Web前端之html_day2
查看>>
第六章4
查看>>
get_date.sh
查看>>
Cocos2d之Action类详解
查看>>
Form_通过FND_FNDFLUPL标准功能上传CSV控件(案例)
查看>>
正则判断支付金额
查看>>
005-OSI七层模型&IP地址
查看>>