保持应用程序x秒

时间:2012-08-16 14:30:42

标签: c# .net multithreading sleep

如果标题令人困惑,我很抱歉,我正在尝试录制音频5秒钟,然后运行关闭功能。

我想我就是这样做的

StartFunction();
Thread.Sleep(5000);
StopFunction();

但这不起作用,因为在线程处于休眠状态时它也不会记录。

然后我想,如果我做一个新的线程,做睡眠和停止功能。但是当我这样做并尝试运行停止功能时,它似乎不再停止,因为它试图停止在另一个线程,如果这是有道理的。

所以,如果有人知道如何解决这个问题,请告诉我

3 个答案:

答案 0 :(得分:0)

你想在另一个主题中做这个是正确的(虽然你可能想看看timers,因为他们为你做了这个工作)。

我不是C#-er,但我相信您要停止录制的内容称为同步方法。 This page应该指出正确的方向。

答案 1 :(得分:0)

一种可能的解决方案是:

  • 开始录制
  • 启动计时器(每100毫秒就可以)并设置DateTime startTime = DateTime.Now
  • 当提出计时器事件时,请检查(DateTime.Now - startTime)并查看它是否> = 5000毫秒:如果是,请停止计时器并停止录制

这使您可以在屏幕上设置递减计时器 如果你想让它更容易,你可以运行一个延迟5秒的计时器,并在计时器事件中,停止它并停止录音。

答案 2 :(得分:0)

您需要使用Timer。 .NET中有三个计时器:System.Threading.TimerSystem.Timers.TimerSystem.Windows.Forms.Timer

只有后者可以向您保证它将在同一个线程中运行。你需要一个Windows应用程序。

Class MyClass
{
    Timer timer = new Timer();

    public MyClass()
    {
        timer.Tick += new EventHandler(timer_Tick);
        timer.Interval = 5000;
    }

    void Record()
    {
        StartFunction();
        timer.Start();        
    }

    void timer_Tick(object sender, EventArgs e)
    {
         timer.Stop();
         StopFunction();
    }
}