如果标题令人困惑,我很抱歉,但我正在尝试录制 5 秒钟的音频,然后运行关闭功能。
我想我只是这样做
StartFunction();
Thread.Sleep(5000);
StopFunction();
但这不起作用,因为它在线程休眠时也不会记录。
然后我想,如果我创建一个新线程,可以在其中执行睡眠和停止功能。但是当我这样做并尝试运行停止功能时,它似乎不再停止,因为它试图停止另一个线程中的记录,如果那样的话说得通。
所以如果有人知道我该如何解决这个问题,请告诉我
如果标题令人困惑,我很抱歉,但我正在尝试录制 5 秒钟的音频,然后运行关闭功能。
我想我只是这样做
StartFunction();
Thread.Sleep(5000);
StopFunction();
但这不起作用,因为它在线程休眠时也不会记录。
然后我想,如果我创建一个新线程,可以在其中执行睡眠和停止功能。但是当我这样做并尝试运行停止功能时,它似乎不再停止,因为它试图停止另一个线程中的记录,如果那样的话说得通。
所以如果有人知道我该如何解决这个问题,请告诉我
一种可能的解决方案是:
DateTime startTime = DateTime.Now
(DateTime.Now - startTime)
它是否 >= 5000ms:如果是,则停止定时器并停止录制这使您可以在屏幕上设置递减计时器。
如果你想让它更容易,你可以运行一个延迟 5 秒的计时器,并在计时器事件时停止它并停止录制。
您需要使用Timer
. .NET 中有三个计时器System.Threading.Timer
:System.Timers.Timer
和System.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();
}
}