<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .net c# Func<Task>及變體做為多播委托異步執行會另開線程的問題

      1. 問題

      環境是dotnet8及以前的版本,dotnet9+不知道是否還有這個問題(我猜是一樣的)。
      如下代碼,在多播委托await異步執行時,不會等待委托方法執行完成,它們在新的線程中運行。

      async Task A()
      {
      }
      async Task B()
      {
      }
      Func<Task> func;//下面+=運算賦值為多播委托
      func+=async()=>await A();
      func+=async()=>await B();
      
      await func();//這里不會等待A和B方法執行完成,它們在新的線程中運行
      

      2. 解決

      用GetInvocationList方法取得所有委托方法,逐個執行。

      Func<Task> func;//下面+=運算賦值為多播委托
      func+=async()=>await A();
      func+=async()=>await B();
      
      var subscribers = func.GetInvocationList();//取得多播委托的每個方法然后逐個執行
      foreach(var subscriber in subscribers)
      {
          var asyncMethod = (Func<Task>)subscriber;
          await asyncMethod();
      }
      

      3. 總結

      同樣的道理,也適用于事件,因為事件本身也是委托。用這個辦法就可以解決事件、委托、Action、Func等同步還是異步執行的問題。

      posted @ 2025-04-29 21:01  Rick Carter  閱讀(281)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品国产综合久久一线| 色综合天天综合网国产人| AV区无码字幕中文色| 亚洲精品久久久久国色天香| 扒开粉嫩的小缝隙喷白浆视频| 自拍偷区亚洲综合第二区| 国产jizzjizz视频| 激情久久综合精品久久人妻| 九九热在线精品视频九九| 怡春院久久国语视频免费| 一区二区三区鲁丝不卡| 国产一区二区三区AV在线无码观看| 久久97人人超人人超碰超国产| 亚洲风情亚aⅴ在线发布| 亚洲欧美日韩高清一区二区三区| 熟妇人妻中文a∨无码| 奇米777四色成人影视| 99久久伊人精品综合观看| 国模精品视频一区二区三区| 成人久久精品国产亚洲av| 国产成人亚洲综合图区| 成人午夜av在线播放| 久久精品国产色蜜蜜麻豆| 国产真正老熟女无套内射| 91久久性奴调教国产免费| 国产一区二区不卡91| 国产95在线 | 欧美| 国产伦码精品一区二区| 国产农村妇女aaaaa视频| 亚洲精品成人一二三专区| 精品人妻少妇嫩草av系列| 亚洲精品国产福利一区二区| 日韩精品中文字幕人妻| 蜜臀91精品国产高清在线| 韩国无码AV片午夜福利| 毛片网站在线观看| 亚洲色最新高清AV网站| 国产精品第一二三区久久| 好男人视频在线播放| 日韩精品人妻中文字幕| 极品无码国模国产在线观看|