请帮忙解释下Dispatcher.BeginInoke((Action)(()=>....;...;...;),null);啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请帮忙解释下Dispatcher.BeginInoke((Action)(()=>....;...;...;),null);啥意思?相关的知识,希望对你有一定的参考价值。
主要解释一下(Action)(()=>处理代码;)这种用法什么意思,这肯定是一种简写,请帮我一步一步还原到正常的写法,谢谢!!
请各位热心网友注意下我主要是想明白(Action)(()=>处理代码;)这个用法的原始写法是怎么写的,或者帮忙解释下这样的写法是什么意思。
BeginInvoke 是异步操作;因此,调用之后控制权会立即返回给调用对象。
BeginInvoke 返回一个 DispatcherOperation 对象,当委托位于事件队列中时,该对象可用于与委托进行交互。
由 BeginInvoke 返回的 DispatcherOperation 对象可以采用多种方式与指定的委托进行交互,例如:
当在事件队列中挂起执行时,更改委托的 DispatcherPriority。
从事件队列中移除委托。
等待委托返回。
获取委托执行之后返回的值。
如果按同一个 DispatcherPriority 调用多个 BeginInvoke,将按调用发生的顺序执行它们。
如果对某个已关闭的 Dispatcher 调用 BeginInvoke,则返回的 DispatcherOperation 的状态属性将设置为 Aborted。追问
(Action)(()=>处理代码;)能不能帮我把这个还原到原始的写法呢?
参考技术A A: userlist1.BeginInvoke((Action)delegate....);B: userlist1.BeginInvoke(new Action(() =>....));
userlist1是我自定义的控件,简单阐述这两种写法的区别。同问...... 参考技术B (Action)(()=>处理代码;)这种简写称之为lambda表达式,它是.NET3.5之后对匿名函数的一种简化。想要还原成一般写法,你要了解委托及匿名委托。
()=>代码这个表达式,最前面的小括号内()是委托使用的参数,大括号内是委托方法的具体实现,现在小括号内容为空,表示委托方法的参数为空,也就是封转一个不包含任何参数的方法。换成一般的委托定义就是:
delegate void CommonDelegate();
而且由于匿名函数是不具备类型的,因此还需要进行类型强转,所以需要在前面加上(Action)这样的转换,表示将匿名方法转换成标注的委托类型。Action是.NET自定义的委托,表示一个不接受任何参数的委托方法。
综上所述,完整的写法应该是:
(Action)(delegate()
// 处理代码;
)
以上是匿名函数的写法,.NET2.0可以支持。如果连匿名函数也不用,那就把delegate()这一段换成普通委托定义就行了,例如:
Action action = new Action(Method);本回答被提问者和网友采纳
帮忙解释下混乱C代码
代码如下:
#include <stdio.h>
main(t,_,a)char *a;return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*w+/w#cdnr/+,r/*de+,/**+,/w%+,/w#q#n+,/#l+,/nn+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,w+K w'K:'+e#';dq#'l \
q#'+d'K#!/+k#;q#'reKK#w'reKKnl]'/#;#q#n'))#w'))nl]'/+#n';drw' i;# \
)nl]!/nn#'; r#w'r ncnl]'/#l,+'K rw' iK;[nl]'/w#q#n'wk nw' \
iwkKKnl]!/w%'l##w#' i; :nl]'/*q#'ld;r'nlwb!/*de'c \
;;nl'-rw]'/+,##'*#nc,',#nw]'/+kd'+e+;#'rdq#w! nr'/ ') +rl#'n' ')# \
'+##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
:0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);
国际C语言混乱代码大赛作品
你贴出来的这段基本上只是语法混乱,如果有兴趣的话可以用cdecl辅助分析一下看看。
混乱代码大赛的很多源码都是通过定义宏来混乱化的,那种cdecl都帮不上忙…… 参考技术A 你自己都知道是乱码了。。。这根本就不是程序了
以上是关于请帮忙解释下Dispatcher.BeginInoke((Action)(()=>....;...;...;),null);啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
请高手帮忙解释下这多线程的源代码,每句注释下 #include <stdio.h> #include <stdlib.h>