在后台播放哔声

Posted

技术标签:

【中文标题】在后台播放哔声【英文标题】:Playing Beep sound in background 【发布时间】:2015-09-07 11:54:51 【问题描述】:

根据其他网站的一些参考资料,我开发了一个代码来检查物品是否可以出售。 如果该项目不可用,它应该在背景中发出哔声以及一个对话框(重试/取消)。 此外,如果用户单击“重试”,蜂鸣声不应停止。否则单击“取消”应在后台停止蜂鸣声。 我使用的代码

                    if()
                    
                     Item exists code
                    
                    else
                    
                        //Item Not found
                        retry();
                    

public void retry()
    
        Thread beepThread = new Thread(new ThreadStart(PlayBeep));
        beepThread.IsBackground = true;

        if (MessageBox.Show("Item not found", "Alert", MessageBoxButtons.RetryCancel) == DialogResult.Retry)
                        
            beepThread.Start();                
            retry();
        
        else
        
            beepThread.Abort();
            Console.Beep(500, 1);
            return;
        
    

    private void PlayBeep()
    
        Console.Beep(500, int.MaxValue);
    

使用上面的代码,当我点击 retry 时播放声音,但我希望它在进入 Else 条件时立即播放(当找不到项目时) 有什么建议么?

【问题讨论】:

【参考方案1】:

您应该在消息框出现之前立即发出哔声。为了避免有太多未使用的threads,您必须在这两种情况下中止它们。 最后,我建议使用while(true) 循环以获得无尽的哔声。

    public void retry()
    
        Thread beepThread = new Thread(new ThreadStart(PlayBeep));
        beepThread.IsBackground = true;
        beepThread.Start();

        if (MessageBox.Show("Item not found", "Alert", MessageBoxButtons.RetryCancel) == DialogResult.Retry)
        
            beepThread.Abort();
            retry();
        
        else
        
            beepThread.Abort();
            Console.Beep(500, 1);
            return;
        
    

    private void PlayBeep()
    
        while(true)
            Console.Beep(500, int.MaxValue); 
    

【讨论】:

谢谢@Jibbow 真的很有帮助:)

以上是关于在后台播放哔声的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中动态显示文本时在后台播放声音?

我们可以在 iPhone 应用程序中以特定间隔在后台播放声音吗?

单击按钮时播放哔声

在 C、MacOS 中播放哔声

为啥 Windows 在 KeyDown 上播放哔声,但在 DoubleClick 上不播放?

Javas Audio Clips 在频繁播放哔声时出现问题