Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;输入数组为空";进行调用的跨线程调用时ArgumentException_C#_Multithreading_Invoke - Fatal编程技术网

C# &引用;输入数组为空";进行调用的跨线程调用时ArgumentException

C# &引用;输入数组为空";进行调用的跨线程调用时ArgumentException,c#,multithreading,invoke,C#,Multithreading,Invoke,我有两个独立的线程,有时我需要从另一个线程调用成员。我通过调用的常规方法来实现这一点。以下是基本设置: void Foo() //On thread 1 { if (this.InvokeRequired) this.Invoke(new Action(Foo2)); else Foo2(); } void Foo2(){/*Do Work*/} //Accesses members on thread 2 我收到错误“Argume

我有两个独立的线程,有时我需要从另一个线程调用成员。我通过调用的常规方法来实现这一点。以下是基本设置:

void Foo() //On thread 1
{
     if (this.InvokeRequired)
          this.Invoke(new Action(Foo2));
     else
          Foo2();
}

void Foo2(){/*Do Work*/} //Accesses members on thread 2
我收到错误“ArgumentException未处理:输入数组为空”。问题是,我试图调用的方法没有参数,根据文档,这不应该是一个问题

我甚至试着替换:

this.Invoke(new Action(Foo2));

(文档中说,如果没有参数,则传递null,我仍然会得到相同的错误)

这是StackTrace的顶部:

位于System.Windows.Forms.Control.MarshaledInvoke(控件调用方、委托方法、对象[]参数、布尔同步) 位于System.Windows.Forms.Control.Invoke(委托方法,对象[]args)


所以,它说数组(对于我假定的参数)是空的,但实际上这是正确的,因为我调用的是一个没有参数的方法。。。这里有什么吸引人的地方?

发布Foo2的内容。我有一种感觉,这是另一个线程中发生的异常,在Foo2中,MarshaledVoke只是在重试。另外,转到调试->异常并选中“公共语言运行时异常”框,然后重试。您可能会看到同样的异常出现,但在Foo2内部的某个地方。是的,错误原来是在我从user32调用SendInput时发生的。谢谢
this.Invoke(new Action(Foo2), null);