首页 新闻 搜索 专区 学院

beginInvoke 如果不调用EndInvoke会怎么样?

0
[已解决问题] 解决于 2013-11-19 09:47

如题:

beginInvoke 如果不调用EndInvoke会怎么样? 

.F.的主页 .F. | 初学一级 | 园豆:13
提问于:2013-11-17 21:23
< >
分享
最佳答案
0

不调用的话,你就不知道操作是否完成了,执行的过程是否抛出了异常。

连续调用不影响,但是要注意线程同步。你多执行几次下以下代码就知道了:

var shared = 0;

Action<int> action = p => {
    Console.WriteLine("p = {0}, shared = {1}", p, shared);
    
    var random = new Random();
    Thread.Sleep(random.Next(1000));
    
    shared = p;
};

action.BeginInvoke(1,null,null);
action.BeginInvoke(2,null,null);
action.BeginInvoke(3,null,null);
action.BeginInvoke(4,null,null);
action.BeginInvoke(5,null,null);
action.BeginInvoke(6,null,null);
action.BeginInvoke(7,null,null);
action.BeginInvoke(8,null,null);
action.BeginInvoke(9,null,null);
action.BeginInvoke(10,null,null);

 

奖励园豆:5
deerchao | 大侠五级 |园豆:8167 | 2013-11-17 22:26
其他回答(3)
0

不怎么样,你可以不调用

56180825 | 园豆:1167 (小虾三级) | 2013-11-17 21:39

如果  我在下一步  还要调用这个呢?

           
            this.BeginInvoke(STByzy, new object[] { tb_yzy, yzy });
            。。。
            this.BeginInvoke(STByzy, new object[] { tb_yzy, yzy });

支持(0) 反对(0) .F. | 园豆:13 (初学一级) | 2013-11-17 21:41
1

Delegate.BeginInvoke必须对应EndInvoke,据说不调可能会有memory leak(未证实)。

Control.BeginInvoke可以不EndInvoke。

你这个this应该是Control,EndInvoke可以不调用。 连续调用多次我印象中没什么影响,这些调用会排队执行(实际上所有Control.BeginInvoke都会在主UI线程上排队执行,IIRC)

Todd Pointer | 园豆:379 (菜鸟二级) | 2013-11-17 21:46
0

可以不调

空明流光 | 园豆:48 (初学一级) | 2013-11-18 10:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册