当c#Invoke()发生时,我得到一个Argument异常
本文关键字:Argument 异常 一个 c#Invoke | 更新日期: 2023-09-27 18:19:45
我有两个线程:UI和服务器。如果服务器线程收到一些消息,就必须将其交给UI。这就是我使用invoke方法的原因。
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。
如果粘贴的代码正确且完整,则必须将this.myForm.SetTextToListBox1
更改为this.myForm.SetText