2014-09-04 56 views
-2

在C#中的事件,我想一些办法:秒表 - 当达到确定的时间

  • 实例化一个秒表
  • 启动秒表
  • 当=> |秒表的时间段| > = 60000然后
  • 叫我的事件,这|>
  • 的ByRef禁用秒表和执行动作

这意味着,将有一个事件,当它达到1分钟,会跑。

对于这一点,我有被应用到用户自己定制的方法关闭:

public static TResult CallWebService<TResult>(Func<TResult> closure) 
{ 
    Stopwatch timer = new Stopwatch(); 
    timer.Start(); 
    return closure.Invoke(); 
} 

但是,我们知道,Stopwatch已经不是Tick事件,像Timer。但是计时器不能满足我的需求。我知道还有其他几种方法可以做到这一点,但我想通过Stopwatcher这样做。

我的情况是这样的:

我把从Web服务方法,有时我会收到超时。我有几十种方法。我有一个静态方法,然后过滤然后接收作为第一类对象。我在CallWebService内做了所有我需要的。我会有一个计时器,计数1分钟。如果在1分钟内服务器没有回应我的请求,那么我会抛出异常。我这样做是因为古董需要花费大约5分钟时间来发出超时信息。我使用紧凑的框架,我会做异步。

+0

Ehr,no。我会做异步。 – 2014-09-04 18:03:37

+1

“秒表”不适合这个。这是为了测量时间,就是这样。 – 2014-09-04 18:03:40

+0

啊,好的。然后我会用'Timer'来代替。 – 2014-09-04 18:05:51

回答

0

而不是使用您自己的自定义计时器,只需使用服务呼叫超时设置。通过配置进行设置或直接在代码中设置1分钟。它会在超时到期后抛出异常,您可以捕获并采取任何必要的操作。

See this example in msdn