CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

关于委托的异步调用.

楼主chinadragon5188(china)2006-12-01 11:42:25 在 .NET技术 / C# 提问

请教:  
  我用委托的异步调用,如:  
   
  DelegateSaveData   ExeSaveData   =   new   DelegateSaveData(   SaveData   );  
  ExeSaveData.BeginInvoke(sFileName,   null,   null);  
   
  为什么在函数SaveData出现异常错误(savedata函数中没有try语句),没有出现异常的提示呢?  
  还有,我写成  
  try  
  {  
  DelegateSaveData   ExeSaveData   =   new   DelegateSaveData(   SaveData   );  
  ExeSaveData.BeginInvoke(sFileName,   null,   null);  
  }  
  catch  
  {  
  ...  
  }  
  在catch中也没有捕捉到异常?  
   
  很是郁闷,请教各位,谢谢。 问题点数:20、回复次数:4Top

1 楼tjvictor(终于升星了,向两星奋斗)回复于 2006-12-01 11:47:58 得分 0

這個問題可能要看到代碼後,才知道是哪的問題。Top

2 楼flyskywlh(成功时享受成就,失意时享受生活..)回复于 2006-12-01 12:28:00 得分 0

catch(Exception   ex)  
  {  
  throw   new   Exception(ex.Message)  
  }  
  Top

3 楼liujia_0421(SnowLover)回复于 2006-12-01 12:53:42 得分 10

在savedata函数中加上捕获异常的语句...  
   
  可以不处理,但要在catch(Exception   ex)下再抛出..  
   
  priavte   void   savedata(type1   t1,type2,t2)  
  {  
  try  
  {  
        //操作  
  }  
  catch(Exception   ex)  
  {  
      //不作处理,但抛出异常  
   throw   new   Exception(ex.Message);  
  }  
  }Top

4 楼Little_Ghost(小鬼)回复于 2006-12-01 13:07:56 得分 10

原因:  
  BeginInvoke的时候CLR会启动另外一个线程(NewThread)  
  而你的程序的主线程(MainTread)在调用BeginInvoke以后立刻返回,  
  没有返回值,MainThread和NewThread两个线程相对独立。  
  当NewThread线程出现错误,在你主线程应该是捕捉不到了  
   
  解决:  
  如果你想捕捉到异常那么你就要等待NewThread完成  
  并通过IAsyncResult建立两个线程的关系  
  这样写  
   
  try  
  {  
  DelegateSaveData   ExeSaveData   =   new   DelegateSaveData(   SaveData   );  
  IAsyncResult   result   =   ExeSaveData.BeginInvoke(sFileName,   null,   null);  
  ExeSaveData.EndInvoke(result);  
  }  
  catch  
  {  
  ...  
  }  
   
  这样你可以捕捉到NewThread中的异常了  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:chinadragon5188
  • liujia_0421
  • Little_Ghost

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo