http://blog.csdn.net/cml2030/article/details/2172854

http://blog.163.com/weizhiyong_111/blog/static/28597099200981145347563/

 //配置操作执行的委托
        /// <summary>
        /// 手机号信息配置执行委托
        /// </summary>
        /// <param name="statusString">包含操作失败的原因信息</param>
        /// <returns>True表示手机号信息配置成功,False表示手机号信息配置失败,失败原因在statusString参数中</returns>
        private delegate bool ConfigWarnInfoForTelNumsHandler(out string statusString);

子鼠 2014/6/26 20:00:37

ConfigWarnInfoForTelNumsHandler configWarnInfoForTelNumsHandler = ConfigWarnInfoForTelNumsHandlerProcess;

子鼠 2014/6/26 20:00:49

configWarnInfoForTelNumsHandler.BeginInvoke(out statusString, ConfigWarnInfoForTelNumsHandlerProcessCallBack, null);

子鼠 2014/6/26 20:01:12

private bool ConfigWarnInfoForTelNumsHandlerProcess(out string statusString)
        {
            try
            {
                byte telNumberCount = (byte)0;
                string[] telInfoStringArray = new string[5];
                GenerateTelNumberCountAndTelInfoStringArray(out telNumberCount, telInfoStringArray);
                //ExcuteConfigWarnInfoOfTelNumber此函数下发指令
                if (CommandRequestExcutingManager.ExcuteConfigWarnInfoOfTelNumber(telNumberCount, telInfoStringArray))
                {
                    //将事件状态设置为非终止状态,从而导致线程受阻。
                    CommunicationManager.Instance.Commnication.ThreadSyncEventDictionary[DataAnalysisType.ConfigWarnInfoForTelNum].Reset();

//等待90秒,看是否能收到信号
                    if (CommunicationManager.Instance.Commnication.ThreadSyncEventDictionary[DataAnalysisType.ConfigWarnInfoForTelNum].WaitOne(130000))
                    {
                        if (telInfoConfigStatus)//配置成功之后,将telInfoConfigStatus置为true
                        {
                            //statusString = string.Empty;
                            statusString = "配置手机号码到短信模块成功";
                            return true;
                        }
                        else
                        {
                            statusString = "130秒内手机号信息配置失败!";
                            return false;
                        }
                    }
                    else//150秒没有响应
                    {
                        statusString = "[130秒内没有响应]与控制器通信失败,可能是接线松动,也可能是控制器电池耗尽等原因";
                        return false;
                    }
                }
                else
                {
                    statusString = "USB线连接异常,您可能需要重启软件,给您带来的不便,请谅解";
                    return false;
                }
            }
            catch (Exception ex)
            {
                LogService.LogManager.Instance.ProcessUIExceptionLog(ex);
                statusString = ex.Message;
                return false;
            }
        }

子鼠 2014/6/26 20:01:42

/// <summary>
        /// 异步执行手机号信息配置回调函数
        /// </summary>
        /// <param name="ar">异步执行手机号信息配置的结果</param>
        private void ConfigWarnInfoForTelNumsHandlerProcessCallBack(IAsyncResult ar)
        {
            if (InvokeRequired)
            {
                Invoke(new AsyncCallback(ConfigWarnInfoForTelNumsHandlerProcessCallBack), ar);
            }
            else
            {
                ConfigWarnInfoForTelNumsHandler configWarnInfoForTelNumsAction = ((AsyncResult)ar).AsyncDelegate
                    as ConfigWarnInfoForTelNumsHandler;
                //让状态滚动条停止
                rItemMarqueeProgressBar.Stopped = true;
                 //调整UI上的显示
                grpTelConfig.Enabled = true;
                
                string failureStatus = string.Empty;
                //当使用BeginInvoke异步调用方法时,如果方法未执行完,EndInvoke方法就会一直阻塞,直到被调用的方法执行完毕
                if (configWarnInfoForTelNumsAction.EndInvoke(out failureStatus, ar))
                {
                    barStatusStaticItem.Caption = "预警手机号信息配置成功!";
                    barStatusStaticItem.Appearance.ForeColor = Color.Green;
                    BandTogvWarnValueInfo();
                    xtraTabControl1.SelectedTabPageIndex = 2;
                }
                else
                {
                    barStatusStaticItem.Caption = string.Format("预警手机号信息配置失败,{0}!", failureStatus);
                    barStatusStaticItem.Appearance.ForeColor = Color.Red;
                }
            }
        }
20:02:23
子鼠 2014/6/26 20:02:23

CommunicationManager.Instance.Commnication.ThreadSyncEventDictionary[DataAnalysisType.ConfigWarnInfoForTelNum].Set();

最新文章

  1. 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理
  2. SQL 查询学生缺考情况
  3. js里面的等于号--
  4. 异机恢复 RMAN-06023: no backup or copy of datafile 17 found to restore
  5. java异常处理机制throws
  6. 【转】Android横竖屏切换问题
  7. requirejs源码
  8. Window Linux下实现指定目录内文件变更的监控方法
  9. proguard混淆jar文件
  10. SumoLogic
  11. 导出Excel并下载,但无法定制样式的方法!
  12. [google面试CTCI] 2-1.移除链表中重复元素
  13. Jenkins: 执行 PowerShell 命令
  14. 【学习笔记】【Javaweb】二、Session对象过期时间三种设置方法、Session失效监听器
  15. &lt;unix网络编程&gt;UDP套接字编程
  16. Hadoop端口说明
  17. win10 KMS命令激活步骤&lt;转&gt;
  18. SVN外网访问内网的操作步骤
  19. [转帖] 从零开始编写自己的C#框架(27)——什么是开发框架
  20. Java的Start和Runnable方法的区别

热门文章

  1. 各版本 MySQL 并行复制的实现及优缺点
  2. windows server r2 搭建 ftp服务器
  3. Py之pandas:dataframe学习【转载】
  4. FDR错误发现率-P值校正学习[转载]
  5. zabbix3.0 centos7 yum 安装与简单配置
  6. data.frame和matrix的一些操作
  7. [LeetCode] 787. Cheapest Flights Within K Stops_Medium tag: Dynamic Programming, BFS, Heap
  8. [ps] 灰度和通道基础知识
  9. background 背景图片 在IE8中不显示解决方法
  10. cocos代码研究(7)即时动作子类学习笔记