函数运行时的C#计时器

函数运行时的C#计时器,c#,timer,task,C#,Timer,Task,我有一个函数(称之为Process())进行一些处理。我想在某个时间点调用它,同时启动计时器。然后,我只想在100秒后调用函数后的下一个语句(当然,函数已经完成)。我不想睡眠100秒,因为睡眠表明处理器只是在等待——我希望处理功能在计时器滴答作响时运行 我不知道该用什么。有人说使用任务。有什么建议吗?我建议在另一个线程上关闭函数,然后在主线程上休眠100秒。当主线程再次唤醒时,您可以检查函数线程是否已完成,并将其重新加入主程序流。我建议在另一个线程上关闭函数,然后在主线程上休眠100秒。当主线程

我有一个函数(称之为Process())进行一些处理。我想在某个时间点调用它,同时启动计时器。然后,我只想在100秒后调用函数后的下一个语句(当然,函数已经完成)。我不想睡眠100秒,因为睡眠表明处理器只是在等待——我希望处理功能在计时器滴答作响时运行


我不知道该用什么。有人说使用任务。有什么建议吗?

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

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

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

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();

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

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

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();
int Ticks = Environment.TickCount;

ReallyBigFunction();

if(Environment.TickCount - Ticks > 100*1000)
{
    // The function took more than 100 seconds
}
注意:当前代码将允许您访问该界面

int Ticks = Environment.TickCount;

ReallyBigFunction();

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