gpt4 book ai didi

c# - 如何重新启动线程或任何其他替代解决方案

转载 作者:行者123 更新时间:2023-12-03 00:41:07 25 4
gpt4 key购买 nike

我正在使用自动调用号码的调用应用程序。我正在使用主线程来查询通话状态(忙碌、拨号、事件、通话、停用等)。 Whenever call is picked recorded audio will be played using other thread 2. When call status is deactivated main thread will stop audio by stopping thread 2. On next call again when call is picked recorded audio will played using thread 2.

     Thread autoReminder = new Thread(new ThreadStart(threadAutoCalling));


//// Main thread on call attend calls
autoReminder.Start();
// On call end, i tried
autoReminder.Abort();

private void threadAutoCalling()
{
try
{
// PlayAudio(@"C:\Users\CheatnPc\Desktop\TextToSpeechAudio\psf1.wav");

PlayAudio(@"C:\Users\CheatnPc\Desktop\TextToSpeechAudio\psf3.wav");
PlayAudio(@"C:\Users\CheatnPc\Desktop\TextToSpeechAudio\sales.wav");
}
catch (Exception ex)
{
throw ex;
}
}
public void PlayAudio(string path)
{

(new Microsoft.VisualBasic.Devices.Audio()).Play(path, Microsoft.VisualBasic.AudioPlayMode.WaitToComplete);

}

线程中止后,它不能再次启动。我该怎么做,或者是否有任何替代解决方案。

最佳答案

线程无法重新启动 - 当它们完成时,它们就完成了。

通常的解决方案是简单地启动一个新线程,但是当你做的事情尽可能少时,使用线程池线程可能是一个更好的主意:

Task.Run(threadAutoCalling);

或者甚至更好,如果有调用这些 PlaySound 的异步方式和 Speak ,使用它 - 通常,您不需要真正的 CPU 工作来处理这样的操作。

关于c# - 如何重新启动线程或任何其他替代解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34133863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com