我正在尝试让一个线程在 Win Forms 应用程序中将信息返回到"JobViews"。但是在调用调用时,我收到"预期方法名称"错误。
这是我当前的代码,
public void initJobListViews_DoWork(string IP, int Port)
{
initJobListViews();
bool JobString = fillJobViews(IP, Port);
}
public void SocketClientReturn(string IP, int Port)
{
if (this.InvokeRequired)
{
this.Invoke(new SocketClientReturnDelegate(initJobListViews_DoWork(IP, Port)));
/// this.Invoke(new SocketClientReturnDelegate(initJobListViews_DoWork(IP, Port),null));
// Also complains
}
else
{
initJobListViews_DoWork(IP, Port);
}
}
private delegate void SocketClientReturnDelegate();
我也尝试了以下方法,
public void initJobListViews_DoWork(string IP, int Port)
{
initJobListViews();
bool JobString = fillJobViews(IP, Port);
}
public void SocketClientReturn(string IP, int Port)
{
if (this.InvokeRequired)
{
this.Invoke(new SocketClientReturnDelegate(initJobListViews_DoWork));
}
else
{
initJobListViews_DoWork(IP, Port);
}
}
private delegate void SocketClientReturnDelegate(string IP, int Port);
这在编译过程中不会产生任何问题,但程序在运行时会抛出"TargetParameterCountException"。
我以前使用过这种技术没有问题,我有点困惑为什么这次失败了??
您的Invoke
期待委托,而您正在调用函数执行此操作,
this.Invoke(new SocketClientReturnDelegate(initJobListViews_DoWork),new object[]{IP, Port});