我有一个函数(称之为Process())进行一些处理。我想在一个点上调用它,同时启动一个计时器。然后我想在函数之后调用下一个语句,只有100秒(当然函数已经完成)。我不想睡100秒,因为睡眠暗示处理器正在等待 - 我希望处理功能在定时器正在滴答时运行。
我不确定应该使用什么。有人说使用任务。有什么建议吗?
答案 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();
注意:当前代码将允许您访问界面。