我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 网络编程 > ASP专区 > Asp组件/脚本 > 一步一步学Remoting之五:异步操作
热门文章排行
热门文章排行 手推车”功能的实现(10-07)
八大法则防范ASP网站漏洞(10-23)
ASP教程十一、调试ASP脚本(10-23)
在JSP中访问数据库大全(10-23)
虚机服务中常见Asp.Net低级错误一览(03-21)
精采文章排行
精采文章排行 ASP.NET实现抓取网页中的链接(11-15)
ASP连接数据库的11种方法(11-10)
如何动态创建网页的RSS内容摘要(11-10)
ASP网站漏洞及入侵防范方法(11-10)
ASP自定义函数:对字符串正则替换(11-10)
技术专题推荐
网管论坛交流
 

一步一步学Remoting之五:异步操作 

作者:佚名   来源:一亩三分地   点击:   日期:2007-03-28

如果你还不知道什么是异步也不要紧,我们还是来看实例,通过实例来理解才是最深刻的。
在Remoting中,我们可以使用以下几种异步的方式:
1、普通异步
2、回调异步
3、单向异步
一个一个来说,首先我们这么修改我们的远程对象:
public int ALongTimeMethod(int a,int b,int time)
        {
            Console.WriteLine(
"异步方法开始");
            System.Threading.Thread.Sleep(time);
            Console.WriteLine(
"异步方法结束");
            
return a+b;
        }

这个方法传入2个参数,返回2个参数和表示方法执行成功,方法需要time毫秒的执行时间,这是一个长时间的方法。
如果方法我们通过异步远程调用,这里需要注意到这个方法输出的行是在服务器端输出的而不是客户端。因此,为了测试简单,我们还是在采用本地对象,在实现异步前我们先来看看同步的调用方法,为什么说这是一种阻塞?因为我们调用了方法主线程就在等待了,看看测试:
DateTime dt=DateTime.Now;
RemoteObject.MyObject app
=new RemoteObject.MyObject();
Console.WriteLine(app.ALongTimeMethod(
1,2,1000));
            Method();
            Console.WriteLine(
"用了"+((TimeSpan)(DateTime.Now-dt)).TotalSeconds+"");
            Console.ReadLine();

假设method方法是主线程的方法,需要3秒的时间:
private static void Method()
        {
            Console.WriteLine(
"主线程方法开始");
            System.Threading.Thread.Sleep(
3000);
            Console.WriteLine(
"主线程方法结束");
        }

好了,现在开始运行程序:


用了4秒,说明在我们的方法开始以后本地就一直在等待了,总共用去的时间=本地方法+远程方法,对于长时间方法调用这显然不科学!我们需要改进:

1、普通异步:
首先在main方法前面加上委托,签名和返回类型和异步方法一致。
private delegate int MyDelegate(int a,int b,int time);

main方法里面这么写:
DateTime dt=DateTime.Now;
RemoteObject.MyObject app
=new RemoteObject.MyObject();
MyDelegate md
=new MyDelegate(app.ALongTimeMethod);
  IAsyncResult Iar
=md.BeginInvoke(1,2,1000,null,null);
Method();    
if
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·ASP中巧用Response属性 ·第六课:ASP脚本循环语句
·在 Web 页上使用条件数值格式 ·连接数据库查询手册(不仅仅适用于asp)
·警惕"给你的FileSystemObject对象加把锁" ·用ASP做全文检索

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。