当c#Invoke()发生时,我得到一个Argument异常

时间:2012-01-09 13:57:48

标签: c# invoke

我有2个主题:UI和服务器。如果服务器线程获得了一些消息,则必须将其提供给UI。这就是我使用invoke-method的原因。

 public class Server
    { 
    private Form1 myForm;
    private String server;

  public Client(Form1 myForm1, String serv)
  {
    myForm = myForm1;
    server = serv;
   }
   delegate void SetTextCallback(string text, Int16 position);
   public void connection()
   {....
     try
      {
       //Connection succeed
       //got message
       SetText(data[0], Convert.ToInt16(data[1]));
       ...
       }catch (ArgumentException ae)
            {
                ...
            }
            catch (SocketException se)
            {
               ....
            }
    }
    private void SetText(string text, int position)
    {
     if (myForm.InvokeRequired)
                {
                    SetTextCallback d = new SetTextCallback(
                                        this.myForm.SetTextToListBox1);
                    myForm.Invoke(d, new object[] { text, position });
                }
    }

在UI方面,我有这个

public void SetTextToListBox1(String text, Int16 position){}

当我调试时,我可以在setText()中看到,我得到一个ArgumentException。

1 个答案:

答案 0 :(得分:0)

如果粘贴的代码正确且完整,您必须将this.myForm.SetTextToListBox1更改为this.myForm.SetText