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#