0

for番号のリストを呼び出すためにループを使用しています。リストから最初の番号を取得して電話をかけ、応答を待ってから、リストの次の番号に進みたいと考えています。以前はこれを行ってAutoResetEventいましたが、機能していません。

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)
            {
            }
        }
4

1 に答える 1

0

SetそしてすぐにWaitOneは意味がありません-待機は何も待つ必要がなく、すぐに続行します。

ほとんどの場合、reset-call-wait である必要があります。

  waitingToPickUp.Reset(); 
  phoneCall.Start();
  waitingToPickUp.WaitOne();
于 2013-03-26T02:01:27.730 に答える