使用WPF时,如何解决因Dispatcher参数数量不匹配导致的错误?

2026-04-29 04:582阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计323个文字,预计阅读时间需要2分钟。

使用WPF时,如何解决因Dispatcher参数数量不匹配导致的错误?

摘要:[原文摘要内容]

[修改后的摘要内容]

摘要:[C#] Parameter count mismatch (dispatcher)

使用WPF时,如何解决因Dispatcher参数数量不匹配导致的错误?


那天在使用dispatcher.BeginInvoke时 产生一个 Error :?Parameter count mismatch

code大概如下就会出现此错误

public void FunA() { int[] Array = new int[3] { 0, 1, 2 }; Dispatcher.BeginInvoke(new FuncDelegate(Function), Array); } private delegate void FuncDelegate(int[] Array); private void Function(int[] Array) { //something... }

查了MSDN

public DispatcherOperation BeginInvoke( Delegate method, params Object[] args )

或许你就会有头绪, 主要为args这个参数... 用法并非如此使用

params?关键字可使您指定可以接受参数的方法参数,其中参数数目是可变的。 ?(sample code可以查一下MSDN好朋友XD)

很明显...解法或许就是把arrary 拆开, 一个一个放进去...

int[] Array = new int[3] { 0, 1, 2 }; Dispatcher.BeginInvoke(new FuncDelegate(Function), Array[0], Array[1], Array[2]);

但聪明点, 就用一个object变量包装整个array啰 (记得Function内的实践, 需将obj再转回 int[])

int[] Array = new int[3] { 0, 1, 2 }; object obj = Array; Dispatcher.BeginInvoke(new FuncDelegate(Function), obj);

================另外补充=================

以往C++是透过 postMessage/sendMessage去让UI进行更新

但C#中 您可采用 Dispatcher去实现 ?(要在C#采用postMessage也是可以, 就引入user32.dll)

而Dispatcher.Invoke相当于sendMessage, ?Dispatcher.BeginInvoke则相当于postMessage

任何问题或建议, 欢迎一起讨论:)

原文:大专栏 [WPF] Error : Parameter count mismatch (使用Dispatcher请注意)

本文共计323个文字,预计阅读时间需要2分钟。

使用WPF时,如何解决因Dispatcher参数数量不匹配导致的错误?

摘要:[原文摘要内容]

[修改后的摘要内容]

摘要:[C#] Parameter count mismatch (dispatcher)

使用WPF时,如何解决因Dispatcher参数数量不匹配导致的错误?


那天在使用dispatcher.BeginInvoke时 产生一个 Error :?Parameter count mismatch

code大概如下就会出现此错误

public void FunA() { int[] Array = new int[3] { 0, 1, 2 }; Dispatcher.BeginInvoke(new FuncDelegate(Function), Array); } private delegate void FuncDelegate(int[] Array); private void Function(int[] Array) { //something... }

查了MSDN

public DispatcherOperation BeginInvoke( Delegate method, params Object[] args )

或许你就会有头绪, 主要为args这个参数... 用法并非如此使用

params?关键字可使您指定可以接受参数的方法参数,其中参数数目是可变的。 ?(sample code可以查一下MSDN好朋友XD)

很明显...解法或许就是把arrary 拆开, 一个一个放进去...

int[] Array = new int[3] { 0, 1, 2 }; Dispatcher.BeginInvoke(new FuncDelegate(Function), Array[0], Array[1], Array[2]);

但聪明点, 就用一个object变量包装整个array啰 (记得Function内的实践, 需将obj再转回 int[])

int[] Array = new int[3] { 0, 1, 2 }; object obj = Array; Dispatcher.BeginInvoke(new FuncDelegate(Function), obj);

================另外补充=================

以往C++是透过 postMessage/sendMessage去让UI进行更新

但C#中 您可采用 Dispatcher去实现 ?(要在C#采用postMessage也是可以, 就引入user32.dll)

而Dispatcher.Invoke相当于sendMessage, ?Dispatcher.BeginInvoke则相当于postMessage

任何问题或建议, 欢迎一起讨论:)

原文:大专栏 [WPF] Error : Parameter count mismatch (使用Dispatcher请注意)