委托的begininvoke
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();
委托的begininvoke的更多相关文章
- C# 对委托的BeginInvoke,EndInvoke 及Control 的BeginInvoke,EndInvoke 的理解
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 委托的BeginInvoke和EndInvoke方法
.NET Framework 允许异步调用任何方法,为了实现异步调用目标,需要定义与被调用方法具有相同签名的委托.公共语言运行时会自动使用适当的签名为该委托定义 BeginInvoke 和 EndIn ...
- 异步使用委托delegate --- BeginInvoke和EndInvoke方法
当我们定义一个委托的时候,一般语言运行时会自动帮委托定义BeginInvoke 和 EndInvoke两个方法,这两个方法的作用是可以异步调用委托. 方法BeginInvoke有两个参数: Async ...
- 转:C# 对委托的BeginInvoke,EndInvoke 及Control 的BeginInvoke,EndInvoke 的理解
转载自:http://www.cnblogs.com/easyfrog/p/3141269.html using System; using System.Collections.Generic; u ...
- 使用委托的BeginInvoke方法来完成复杂任务的操作
现在假设我有这样一个窗体(包含一个进度条和一个按钮与两个文本框),在第一个文本框中输入一个数字进行阶乘运算,在此过程中进度条与运算进度保持一致,同时可以在第二个文本框中进行其它工作(比如输入).对付这 ...
- 读书笔记 C#委托的BeginInvoke、EndInvoke之浅析
c#中有一种类型叫委托,它是一种引用类型.可以引用静态与非静态的方法,且这些方法的参数列表和返回值类型必须与所声明的委托一致. 委托引用的方法可以通过BeginInvoke和EndInvoke来异步进 ...
- c#线程之异步委托begininvoke、invoke、AsyncWaitHandle.WaitOne 、异步回调
单靠自己看书学总是会走很多弯路,任何人也不列外,有些时候自己遇到的很多问题,其它别人在很久之前也可能遇到过,上网查查可以走很大捷径,对自己的学习有很大帮助,刚开始弄线程这块,一开始只是看书,很多东西都 ...
- c#委托中的同步和异步方法即BeginInvoke和EndInvoke
学习多线程之前我们先了解一下电脑的一些概念,比如进程,线程,这个参考https://www.cnblogs.com/loverwangshan/p/10409755.html 这篇文章.今天我们接着来 ...
- 通过委托来实现异步 Delegate的BeginInvoke和EndInvoke
什么是.net的异步机制呢? 解释这个话题之前,先让我们来看看同步执行的程序 https://github.com/chucklu/Test/blob/master/DotNet4.5开发指南/并行处 ...
随机推荐
- javaScript高级教程(七)正则表达式中括号三种常见作用
括号用来将子表达式标记起来,以区别于其他表达式 比如很多的命令行程序都提供帮助命令,键入 h 和键入 help 的意义是一样的,那么就会有这样的表达式: h(elp)? 字符h之后的elp可有可无这里 ...
- js-jquery-插件开发(一)
jQuery插件开发模式 jQuery插件开发方式主要有三种:1.通过$.extend()来扩展jQuery 主要是在jQuery命名空间或者理解成jQuery身上添加了一个静态方法2.通过$.fn ...
- 使用SQLMAP对网站和数据库进行SQL注入攻击
from:http://www.blackmoreops.com/2014/05/07/use-sqlmap-sql-injection-hack-website-database/ 0x00 背景介 ...
- [lr] 基本色调调整和色调曲线
基本色调调整 • 曝光度调整 ▶ 控制区域 在Lightroom中,软件提示我们曝光控制的是如图中间调的区域.我们把鼠标移动到曝光工具条上,软件会提示我们这个区域: ▶ 实际效果 ▪ 增加曝光值 增加 ...
- matlab 以excel格式将字符串数组写入TXT文件
[m, n] = size(FFoutpu);fp = fopen('FFoutpu.txt','wt');fprintf(fp, 'name CODE ROTC EBIT_EV SHIZHI ROT ...
- matlab 绘制条状图形
clear,clc;A=zeros(1080,1920,3);A(:,1:384,:)=0;A(:,385:768,:)=10;A(:,769:1152,:)=20;A(:,1153:1536,:)= ...
- System.arraycopy方法详解
- npm包上传下载的命令及例子
npm包上传下载的命令及例子. 新建hello.js 执行:npm init 执行:npm adduser ( username:XXX password:XXX email:XXX ) 上传:npm ...
- java tar.gz文件生成
/** * 压缩文件成Gzip格式,Linux上可使用 * 压缩文件夹生成后缀名为".gz"的文件并下载 * @param folderPath,要压缩的文件夹的路径 * @par ...
- java的时间处理
采用joda.time库 gradle,可以简化calendar的 compile "joda-time:joda-time:2.7" 例子:http://blog.csdn.ne ...