当前位置:编程学习 > C#/ASP.NET >>

BeginInvoke后delegate函数内过程调用不执行


        private delegate void getVoiceDelegate(int lineNum);
        private void getVoice(int lineNum)
        {
            System.Diagnostics.Debug.WriteLine("ii=" + lineNum);
            byte[] b = test("");
            System.Diagnostics.Debug.WriteLine("ii=" + b.Length.ToString());
        }
        private byte[] test(string t)
        {
            return new byte[] { 1, 2, 3, 4 };
        }

         getVoiceDelegate vDlg = new getVoiceDelegate(getVoice);
         IAsyncResult ir = vDlg.BeginInvoke(0, MethodCompleted, null);
         //vDlg.EndInvoke(ir);

代码如上,程序执行到byte[] b = test("");就无故退出了,没有任何错误提示,输出窗口只有"ii=0"而不出现"ii=4"
如果去掉//vDlg.EndInvoke(ir);则可以正常执行
请问这是什么问题? --------------------编程问答-------------------- EndInvoke会把caller给block住,直到被invoke的函数返回,从而确保被invoke的函数一定被执行完。
没有EndInvoke的话,没法保证函数被执行完 --------------------编程问答-------------------- 但是也没有理由不执行啊 --------------------编程问答-------------------- 一楼的说的也不是个好办法,但是说要执行完的 ,那我建议你还是做个异常的处理看看抛出的异常是什么一起的
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,