在ui线程中使用控件的问题

本文关键字:控件 问题 ui 线程 | 更新日期: 2023-09-27 17:53:29

是什么问题在我的工作,我试图使用一个UI线程。

private void btn_Call_Click(object sender, EventArgs e)
    {
        MakeCall();
    }
private void MakeCall()
    {
        try
        {
            //Get the IP we want to call.
            otherPartyIP = new IPEndPoint(IPAddress.Parse(txtCallToIP.Text), 1450);
            otherPartyEP = (EndPoint)otherPartyIP;
            //Get the vocoder to be used.
            if (cmbCodecs.SelectedText == "A-Law")
            {
                vocoder = Vocoder.ALaw;
            }
               else if (cmbCodecs.SelectedText == "u-Law")
            {
                vocoder = Vocoder.uLaw;
            }
            else if (cmbCodecs.SelectedText == "None")
            {
                vocoder = Vocoder.None;
            }
            //Send an invite message.
            SendMessage(Command.Invite, otherPartyEP);             
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "VoiceChat-Call ()", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }          
    }

返回错误:

跨线程操作无效:从a访问控件btn_Call在

上创建的线程以外的线程

在ui线程中使用控件的问题

调用调度器调用中导致问题的行:

 Application.Current.Dispatcher.Invoke(...

从你发布的错误信息来看,不清楚是什么任务导致了你的问题。可能是其中之一:

otherPartyIP = new IPEndPoint(IPAddress.Parse(txtCallToIP.Text), 1450);
otherPartyEP = (EndPoint)otherPartyIP;
vocoder = Vocoder.ALaw;
vocoder = Vocoder.uLaw;
vocoder = Vocoder.None;