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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在線程或任務(wù)中進行異步操作

如何在線程或任務(wù)中進行異步操作

C#
冉冉說 2023-08-13 16:00:19
我需要做一些需要異步的操作(比如向數(shù)據(jù)庫寫入一些內(nèi)容,同時從中讀取一些內(nèi)容,反序列化我從中讀取的內(nèi)容,對這些數(shù)據(jù)執(zhí)行某些操作...等等),但我需要要么在線程上執(zhí)行此操作,要么在任務(wù)上執(zhí)行此操作,以便我可以在執(zhí)行期間執(zhí)行其他操作。此外,如果可以喜歡,總是一方面讀取數(shù)據(jù)庫,另一方面在其中寫入數(shù)據(jù),那就太好了,我很確定這是可能的,但我不確定如何實現(xiàn)它,以及使用什么庫/工具/功能...等我正在開發(fā)控制臺應(yīng)用程序我嘗試了一些東西,例如帶有一些等待的異步方法,但我不太了解所有這些之間的執(zhí)行順序,問題還在于我不太了解 / 關(guān)鍵字以及如何工作,但async我await嘗試Task了少量。我正在研究的實際上是 2 Task.Run,一個在數(shù)據(jù)庫方法中寫入數(shù)據(jù),另一個Task.Run讀取數(shù)據(jù)庫,問題是在這兩個方法中,我都有函數(shù)async,然后,需要等待它們某處,因此也需要等待對寫入數(shù)據(jù)或讀取數(shù)據(jù)的調(diào)用,但我不知道如何制作Task.Run asyncstatic async Task Main(string[]args){// Those two tasks need to run at the same time    Task.Run(() =>    {        // Need to be awaited        var writer = WritingDatabase();    }    Task.Run(() =>    {        // Need to be awaited as well        var reader = ReadingDatabase();    }}public async Task<List<Code>> ReadingDatabase(){      List<Code> listCode = new List<Code>();      // Some code      listCode.Add(await database.ReceiveMessageAsync());      return listCode;}上面的代碼是一個示例,其中可能存在一些錯誤,但我的代碼的功能是存在的
查看完整描述

3 回答

?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊

通常這就是等待所有任務(wù)異步完成的方式:

await?Task.WhenAll(myArrayOfTasks);

要在內(nèi)部等待,Task.Run只需傳遞異步委托(一些讀?。?/p>

Task.Run(async?()?=>
{????await?Task.Delay(1000);
});

另外,了解為什么在實踐中要避免Task.Run:Task.Run Etiquette 和正確用法以及更多示例也會很有幫助。簡而言之,您不應(yīng)該用 包裝阻塞 APITask.Run,這是沒有意義的,因為底層線程無論如何都會被阻塞。對于非阻塞 API 來說,一個好的設(shè)計是 return?Task,因此您無論如何都不需要運行新的 API。


查看完整回答
反對 回復(fù) 2023-08-13
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊

你需要這樣做:


static async Task Main(string[] args)

{

    var tasks = new[]

    {

        Task.Run(() =>

        {

            // Need to be awaited

            var writer = WritingDatabase();

        }),


        Task.Run(() =>

        {

            // Need to be awaited as well

            var reader = ReadingDatabase();

        })

    };


    await Task.WhenAll(tasks);

}


查看完整回答
反對 回復(fù) 2023-08-13
?
侃侃無極

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

由于您已經(jīng)擁有Task返回 API,因此您可以執(zhí)行以下操作:


static async Task Main(string[]args)

{

    await Task.WhenAll(WritingDatabase, ReadingDatabase);

}


查看完整回答
反對 回復(fù) 2023-08-13
  • 3 回答
  • 0 關(guān)注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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