【发布时间】:2011-02-01 18:29:48
【问题描述】:
您好,我正在尝试在不打开 GUI 的情况下播放一些音频文件。以下是代码示例:
if (audio)
{
if (ThreadPool.QueueUserWorkItem(new WaitCallback(CoordinateProc), fireResult))
{
}
else
{
MessageBox.Show("false");
}
}
if (audio)
{
if (ThreadPool.QueueUserWorkItem(new WaitCallback(FireProc), fireResult))
{
}
else
{
MessageBox.Show("false");
}
}
if (audio)
{
if (ThreadPool.QueueUserWorkItem(new WaitCallback(HitProc), fireResult))
{
}
else
{
MessageBox.Show("false");
}
}
情况是样本没有按顺序播放。一些在另一个之前播放,我需要解决这个问题,以便样本按顺序一个接一个地播放。
请问我该如何实现?
谢谢。
编辑:ThreadPool.QueueUserWorkItem(new WaitCallback(FireAttackProc), fireResult);
我已将我所有的声音片段放在 FireAttackProc 中。这没有做的,我想要的是:等到线程停止运行,然后再启动一个新线程,这样样本就不会重叠。
【问题讨论】:
-
线程是为并发执行任务而设计的,一个接一个的播放声音不是并发执行。您可能有在单独的线程上播放声音的正确想法,但不是 each 声音。 Petoj 是正确的。
-
也可以使用线程,这样主 GUI 线程在等待数据时不会冻结。这就是我在这里要做的。
标签: c# threadpool queueuserworkitem