您的位置:首页 > 编程语言 > C#

C#方法延迟返回结果

2012-09-24 21:25 162 查看
不知道标题恰不恰当,只不过我的需求是这个样子的:

例如一个方法A,返回值是bool类型的,但是方法执行过程中,需要另一个方法B执行结束,但是还不能直接调用B方法,可是B是等待外部信号才执行。所以需要延迟一下,等B方法执行了才返回结果。

找了些资料,找到了AutoResetEvent,可以达到我的目的,但是否是最适合的,就不知道了,由于我的项目中所谓的B方法是RS232端口读数据的,然后解析出来的返回值。并不是时时的,可能有点时间差,于是我采用了下面的方式。

原文地址:http://luacloud.com/2012/c-sharp-method-to-delay-their-return-results.html

/// <summary>
/// 标志位,用来等待返回
/// </summary>
<span class="wp_keywordlink_affiliate"><a href="http://luacloud.com/tag/autoresetevent" title="查看 AutoResetEvent 中的全部文章" target="_blank">AutoResetEvent</a></span> are = new <span class="wp_keywordlink_affiliate"><a href="http://luacloud.com/tag/autoresetevent" title="查看 AutoResetEvent 中的全部文章" target="_blank">AutoResetEvent</a></span>(false);
/// <summary>
/// 返回结果,可以是任意需要的类型
/// </summary>
object result;

public object A()
{
/****Begin**/
/*
* 数据的拼装
* 数据的发送
**/
Send("要传输的数据");
/****End****/

//等待信号,-1代表无限等待,可以更改为其他值,单位是毫秒,等待时间过后为超时
are.WaitOne(-1, false);
return result;
}
private void B()
{
byte[] bytes = Read();
/*
* 此处解析bytes中的数据
* 根据解析出来的数据
* 得到想要的结果
* */

//得到需要的结果
result = Encoding.UTF8.GetString(bytes);
//给信号
are.Set();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: