0
我正在使用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)
{
}
}
您可能需要提及您正在使用,以幫助人們查詢其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