目前我自己使用的异步实现方式有两种:
1.建立线程
2.使用回调,通过delegate的begininvoke问题是:
这两种方式好像都是新建立一个线程来达到异步的,那么这两种方式有什么区别?
对于异步来说,上面哪种方式更好一点??好在什么地方呢?
就服务端程序的执行线程来说,肯定是使用线程好一些。目前我就知道使用begininvoke可以很容易的获取异步的执行结果,线程差了点,但是同样也可以实现。那么他们的最大的区别在什么地方呢?

解决方案 »

  1.   

    线程方法不可以传参,要用别的方式实现了
    异步回调接实方法参数。
    导步回调你可以查询是否调用完成,或者等待方法完成,线程不能或者很麻烦我觉得最有用的就是合理安排调用时间,通知机制、另外,在线程中处理控件的时候你也不得不用委托
    很多类都提供了异步方法,如 数据流类,webservice类,优势是在线程中判断一个方法是否执行完成无什么用处
     返回值也不好处理了。 
      

  2.   

    第一种方法是你自己新建的线程,立刻执行
    第二种方法是CLR从线程池中取线程来执行,如没有可用资源,可能需要等待准则:若想要尽快地运行关联任务或者执行一个不常运行的耗时任务,应该选择Thread类,其他情况,应选择线程池来处理更可能扩展的服务器端任务.
      

  3.   

    建立线程 很好用啊。。只要设计合理, 结构很清晰的, 比起数据流里面自带的方便多了。DoSomeThing()DoSomeThingCompleted()
      

  4.   

    根据《Microsoft .NET框架程序设计》的作者Jeffrey Richter 的看法,第二种方法使用委托的异步调用比较好
      

  5.   

    自己建立的线程可以控制优先级啊 暂停 取消 什么时候开始啊这些
    委托的begininvoke方法是建立在线程池的基础上的所以控制手段比较少一点
    不过还是推荐用线程池的线程
      

  6.   


    正确自己刚刚网上找了篇文章 http://space.itpub.net/12639172/viewspace-526512,为了,自己回复一下