如何暂停“for”循环直到获得响应
问题描述:
我正在使用for
循环拨打电话以获取数字列表。 我想从列表中选取第一个号码并拨打电话并等待答复,然后继续进入列表中的下一个号码。 我已经使用AutoResetEvent
来做到这一点,但它不工作。如何暂停“for”循环直到获得响应
for (int k = 0; k < list_Items.Count; k++) {
Number_To_Call = "9" + list_Items[k].ToString();
phoneCall.Start();
waitingToPickUp.Set(); //AutoReset Event
Thread.Sleep();
waitingToPickUp.WaitOne();
string detector = VoiceDetected;
if (detector == "Machine") {
//code
} else if (detector == "Human") {
//code
} else {
//code
}
}
代码得到响应形成呼叫
void phoneCall_CallStateChanged(object sender, VoIPEventArgs<CallState> e)
{
if (e.Item.IsInCall())
{
phoneCallAudioReceiver.AttachToCall(phoneCall);
phoneCallAudioSender.AttachToCall(phoneCall);
manchineDetector.Start();
waitingToPickUp.Set();
string str = VoiceDetected;
}
else if (e.Item.IsCallEnded())
{
phoneCallAudioReceiver.Detach();
phoneCallAudioSender.Detach();
manchineDetector.Stop();
phoneCall = null;
//Number_To_Call = string.Empty;
InvokeOnGUIThread(() =>
{
Number_To_Call = string.Empty;
});
}
}
代码检测机器或人
void manchineDetector_DetectionCompleted(object sender, VoIPEventArgs<AnswerMachineDetectionResult> e)
{
try
{
string VoiceDetected = e.Item.ToString();
}
catch (Exception ex)
{
}
}
答
Set
,并立即WaitOne
是没有意义的 - 等待将不再需要等待什么并立即继续。
最有可能的应该是复位呼叫等待:
waitingToPickUp.Reset();
phoneCall.Start();
waitingToPickUp.WaitOne();
您可能需要提及您正在使用,以帮助人们查询其VOIP软件。 – lzcd 2013-03-26 01:33:52
'Set'立即'WaitOne'没有任何意义......你确定你没有复制粘贴错误(我希望在拨打电话之前进行Reset操作,而不是在后面执行Set操作) – 2013-03-26 01:39:26
You需要另一个线程来设置事件。在“开始”调用之后,有没有办法判断这个调用是否还在等待? – 2013-03-26 01:39:52