加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[WPF] Error : Parameter count mismatch (使用Dispatcher请注意

发布时间:2020-12-16 01:23:16 所属栏目:百科 来源:网络整理
导读:摘要:[C#] Parameter count mismatch (dispatcher) 那天在使用dispatcher.BeginInvoke时 产生一个 Error :?Parameter count mismatch code大概如下就会出现此错误 public void FunA() { int[] Array = new int[3] { 0,1,2 }; Dispatcher.BeginInvoke(new Fun

摘要:[C#] Parameter count mismatch (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,2 };
Dispatcher.BeginInvoke(new FuncDelegate(Function),Array[0],Array[1],Array[2]);

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

int[] Array = new int[3] { 0,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请注意)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读