在工作中,遇到这样一个需求,我要做一个业务,要验证一下现有的数据是否正确,但这个验证又不是必须的,只是说如果这里验证不通过,后面流程就可以不走了,但是如果这里没有验证到,后面也会有验证。也就是说不影响主流程,算得上是一个优化吧。比如我要查询一个东西,但是这个时间不能超过1秒。
在网上查了一下,基本上都是异步执行,有两个线程来做。我查到有两种方法。
第一种 独立成一个类
代码如下:
(1)、FuncTimeOut类
///
///超时设置类///
public classFuncTimeOut
{///
///信号量///
private ManualResetEvent manu = new ManualResetEvent(false);///
///是否接受到信号///
private boolisgetSignal;///
///设置超时时间///
private inttimeout;///
///要委托调用的方法的一个委托///
private ActionfuncNeedRun;///
///构造函数///
/// 委托
/// 超时时间
public FuncTimeOut(Action action, inttimeout)
{this.funcNeedRun =action;this.timeout =timeout;
}///
///执行方法///
/// 参数
public void Execute(intparam)
{
Action tempAction = this.CombineActionAndManuset;var r = tempAction.BeginInvoke(param, this.MyAsynCallback, null);this.isgetSignal = this.manu.WaitOne(this.timeout);if (this.isgetSignal == true)
{
Console.WriteLine("未超时.");
Console.WriteLine("ThreadName:" +Thread.CurrentThread.Name);
}else{
Console.WriteL