第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

難道是僅僅代表參數(shù)items,然后執(zhí)行{}中內(nèi)容?

難道是僅僅代表參數(shù)items,然后執(zhí)行{}中內(nèi)容?

C#
撒科打諢 2023-03-17 17:13:05
看到別人寫(xiě)的代碼中,private async void Button_Click(object sender, RoutedEventArgs e){if (rssURL.Text != ""){RssService.GetRssItems(rssURL.Text,async (items) => { await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>{listbox.ItemsSource = items; });},async (exception) =>{await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>{await new MessageDialog(exception).ShowAsync();});},null);}=======================分割線這其中async (items) => { },這一段到底是什么用法。我知道Lambda表達(dá)式是委托,匿名函數(shù)的簡(jiǎn)寫(xiě)方式。但是這篇代碼中從上到尾都沒(méi)有Delegate定義。
查看完整描述

2 回答

?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

async 關(guān)鍵字表示將被修飾的方法、Lambda 表達(dá)式或匿名方法指定為異步。但并不是說(shuō)被修飾的部分被強(qiáng)制轉(zhuǎn)為異步了,而是使方法可被分割成多個(gè)片段,被修飾的方法依然是同步運(yùn)行,直至到達(dá)其第一個(gè) await 表達(dá)式,此時(shí)會(huì)將方法掛起,直到等待的任務(wù)完成。

而 await 是一個(gè)運(yùn)算符,應(yīng)用于一個(gè)異步方法的任務(wù)掛起方法的執(zhí)行,直到等待任務(wù)完成。與 async 配合使用。

=> 確實(shí)是 Lambda 表達(dá)式。


Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>{    listbox.ItemsSource = items; });

等效于:


Dispatcher.RunAsync(CoreDispatcherPriority.Normal, delegate{    listbox.ItemsSource = items; });

以上的代碼如果用同步的話就是:


RssService.GetRssItems(    rssURL.Text,    (items) => {        listbox.ItemsSource = items;     },    (exception) => {        new MessageDialog(exception).ShowAsync();    },    null);

這樣是不是好理解一些?


查看完整回答
反對(duì) 回復(fù) 2023-03-20
?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

C# 4.5中引入了async 和 await。這兩個(gè)關(guān)鍵字可以讓你更方便的寫(xiě)出異步代碼。

async (items) => { },這應(yīng)該是匿名方法,我寫(xiě)了個(gè)類似的代碼,可以參考一下,提供些思路:


   class Program    {        static void Main(string[] args)        {            MyClass myClass=new MyClass();            Console.ReadLine();        }    }     public class MyClass    {        public MyClass()        {            //這里不會(huì)阻塞              ForEach(async () =>            {                double result = await GetValueAsync(1234.5, 1.01); //此處會(huì)開(kāi)新線程處理GetValueAsync任務(wù),然后方法馬上返回                  //這之后的所有代碼都會(huì)被封裝成委托,在GetValueAsync任務(wù)完成時(shí)調(diào)用                  Console.WriteLine("Value is : " + result);             });            Console.WriteLine("MyClass() End.");        }        public Task<double> GetValueAsync(double num1, double num2)        {            return Task.Run(() =>            {                for (int i = 0; i < 100000; i++)                {                    num1 = num1 / num2;                }                return num1;            });        }         public void ForEach(Action action)        {            action();        }    }


查看完整回答
反對(duì) 回復(fù) 2023-03-20
  • 2 回答
  • 0 關(guān)注
  • 100 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)