在.NET中给定时间触发代码的最简单方法

时间:2009-05-07 18:34:51

标签: .net multithreading

我正在寻找一些美好而简单的东西。例如:

RunAfter(3, delegate() { z = 5; }); // run after 3 seconds
FnThatTakes5Seconds();

在我的情况下,我想测试一些线程代码,并在另一个函数调用的中间发生一些事情。

3 个答案:

答案 0 :(得分:1)

public static void RunAfter(int millisecondTimeout, 
    System.Threading.ThreadStart method) 
{ 
    System.Threading.Thread t = new System.Threading.Thread(() => 
    { 
        System.Threading.Thread.Sleep(millisecondTimeout); 

        method(); 
    }); 

    t.Start(); 
} 

然后你可以做

RunAfter(3000, () => z = 5;);

答案 1 :(得分:0)

我会使用只触发一次并立即启动的System.Threading.Timer。

System.Threading.Timer _timer = new Timer(ProcessTimer, null, 3000, Timeout.Infinite);

答案 2 :(得分:0)

你也可以使用WaitHandle等到后台工作者发生超时。

ManualResetEvent objResetEvent = new ManualResetEvent();
objResetEvent.WaitOne(timeout, ...);