读书人

Beep 为何在发声的时候程序会卡

发布时间: 2013-02-24 17:58:57 作者: rapoo

Beep 为啥在发声的时候程序会卡
button执行该语句Beep后程序会卡住,开启一个线程执行该语句也会如此,怎么解决呢
for(int i=0;i<50;i++)
{
Beep(600,6000)
Sleep(500);
}
笔记本 VS2010,求解!
[解决办法]
本帖最后由 hdt 于 2013-01-24 21:27:59 编辑 BOOL WINAPI Beep(
__in DWORD dwFreq,
__in DWORD dwDuration
);

Parameters
dwFreq
The frequency of the sound, in hertz. This parameter must be in the range 37 through 32,767 (0x25 through 0x7FFF).

Windows Me/98/95: The Beep function ignores this parameter.
dwDuration
The duration of the sound, in milliseconds.


[解决办法]
Generates simple tones on the speaker. The function is synchronous; it performs an alertable wait and does not return control to its caller until the sound finishes.

来自msdn:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms679277(v=vs.85).aspx
[解决办法]
我用C#写的,没卡主啊。



private void button1_Click(object sender, EventArgs e)
{

ThreadStart starter = new ThreadStart(ThreadFunc);
Thread thread = new Thread(starter);

thread.Start();
}

private void ThreadFunc()
{
for (int i = 0; i < 3; i++)
{
Beep(600, 6000);
System.Threading.Thread.Sleep(500);
}

MessageBox.Show("thread finish");
}


[DllImport("kernel32.dll")]
public static extern bool Beep(int freq, int duration);

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("clicked");
}

读书人网 >VC

热点推荐