zoukankan      html  css  js  c++  java
  • Task的使用注意事项

    Task是基于线程池的封装。Task进行异步操作就是从线程池中获取线程进行操作。

    内部调度机制TaskScheduler

    ThreadPoolTaskScheduler

    Task的默认机制,任务在ThreadPool上执行;如果当前Task上的TaskCreationOptions设置为LongRunning的话,这个task就会委托到Thread中去执行。

    SynchronizationContextTaskScheduler

    同步上下文的调度器,原理就是把繁重的耗时工作丢给ThreadPool,然后将更新UI的操作丢给 UI线程的队列中,由UIThread来执行。

    自定义调度器

    ContinueWith

    在有时候使用 Task 的 Delay 之后想要返回主线程

    Task.Delay(TimeSpan.FromSeconds(5)).ContinueWith
    (
        _ => Foo()
        // 如果 Foo 不需要操作UIThread,可以注释下面一段代码提高效率
        , TaskScheduler.FromCurrentSynchronizationContext()
    );
    
    
  • 相关阅读:
    ISP基础(01):ISP模块列表
    Linux 开发(02):打印特殊含义转义符
    note template
    apply、call、bind的区别
    Fiddle 抓包工具
    post和get的使用场景和区别
    闭包
    原型链
    node.js
    CSS垂直居中
  • 原文地址:https://www.cnblogs.com/wesson2019-blog/p/13481097.html
Copyright © 2011-2022 走看看