zoukankan      html  css  js  c++  java
  • 普通方法调用,Invoke,begininvoke三者的区别总结及异步与同步的区别总结

    (1)普通方法调用(直接调用)与Invoke()方法调用方法 使用的线程Id是一样的 即属于同步。

    (2)BeginInvoke(<输入和输出变量>,AsyncCallback callback,object asyncState)方法调用方法 则是启用了新的线程Id       属于异步

    可通过 Thread.CurrentThread.ManagedThreadId    获取当前线程的Id

    *委托类型的BeginInvoke(<输入和输出变量>,AsyncCallback callback,object asyncState)方法 

    异步调用的核心, BeginInvoke(多线程能执行的原因)。

    输入和输出变量:表式委托对应的实参。

    第二个参数(AsyncCallback callback):回调函数,表示异步调用后自动调用的函数 ,共用一个线程id.  AsyncCallback是一个委托   有一个参数(asyncState )

    第三个参数(object asyncState):用于向回调函数提供参数信息。返回值:IasyncResult:异步操作状态接口,封装了异步执行中的参数。

    EndInvoke监视BeginInvoke。委托类型的EndInvoke()方法:借助IasyncResult接口对象,不断查询异步调用是否结束。该方法知道异步调用的方法所有参数,所以,异步调用完毕后,取出异步调用的结果作为返回值。

    对于同步和异步的总结:异步三大特点

    (1)同步方法会出现“假死现象”即卡住界面,异步则不会 原因:异步启动了子线程执行任务,主线程得到释放

    (2)同步速度慢,异步速度快  原因:异步启动了多个线程执行任务,占用更多的资源(异步时cpu瞬间上升)

    (3)异步是无序的 原因:线程的启动和执行是由操作系统决定的,是无序的。可能每个子线程里面耗时不一样

  • 相关阅读:
    redux VS mobx (装饰器配合使用)
    react-native 中使用 mobx
    使用 react-native-tab-navigator 创建 TabBar 组件
    react-native ListView 封装 实现 下拉刷新/上拉加载更多
    react-native 路由 react-native-router-flux
    react-native fetch 请求封装
    react-native flex 布局 详解
    react-native AsyncStorage 数据持久化方案
    react-native 自定义 下拉刷新 / 上拉加载更多 组件
    用 Core Animation 实现图片的碎片化
  • 原文地址:https://www.cnblogs.com/wfaceboss/p/6399668.html
Copyright © 2011-2022 走看看