功能正在运行时的C#定时器

时间:2011-12-01 05:44:24

标签: c# timer task

我有一个函数(称之为Process())进行一些处理。我想在一个点上调用它,同时启动一个计时器。然后我想在函数之后调用下一个语句,只有100秒(当然函数已经完成)。我不想睡​​100秒,因为睡眠暗示处理器正在等待 - 我希望处理功能在定时器正在滴答时运行。

我不确定应该使用什么。有人说使用任务。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

int Ticks = Environment.TickCount;

ReallyBigFunction();

if(Environment.TickCount - Ticks > 100*1000)
{
    // The function took more than 100 seconds
}

答案 1 :(得分:0)

我建议在另一个线程上关闭该功能,然后在主线程上休眠100秒。当主线程再次唤醒时,您可以检查功能线程是否已完成,并将其重新连接到主程序流程中。

答案 2 :(得分:0)

如果您仍希望进程正在运行,您可能需要启动一个等待所需时间的新线程:

ThreadStart start = delegate()
{
    Thread.Sleep(100000);
    Dispatcher.Invoke(DispatcherPriority.Normal,
                        new Action(ThreadDoSomething)); //The function who will execute what you want to do.

};

new Thread(start).Start();

注意:当前代码将允许您访问界面。