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

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

MongoDB 中的異步更改流

MongoDB 中的異步更改流

C#
青春有我 2022-08-20 17:18:11
我想在不阻塞線程的情況下偵聽集合的更改流。在下面的代碼中,F(xiàn)orEachAsync 將永遠阻塞,并在更改發(fā)生時對其進行處理。using (var cursor = await collection.WatchAsync()){    await cursor.ForEachAsync(change =>    {        // process change event    });}我已嘗試刪除“await”并將任務(wù)存儲在變量中,但是在我實際等待或之前不會處理任何更改。稍后等待() 任務(wù)。我希望即使我不等待任務(wù),事件仍然會被處理。我該怎么辦,這樣我的整個程序就不會阻止偵聽更改?我正在考慮將功能包裝在新線程中,但這真的有必要嗎?
查看完整描述

2 回答

?
慕運維8079593

TA貢獻1876條經(jīng)驗 獲得超5個贊

我沒有足夠的聲譽來評論(還),所以我以答案的形式提供反饋:

在這種情況下,您應(yīng)該使用事件(偵聽器,處理程序),而不是等待/異步。如果沒有更多關(guān)于你想要完成什么的信息,就很難詳細說明這一點。


查看完整回答
反對 回復(fù) 2022-08-20
?
繁花如伊

TA貢獻2012條經(jīng)驗 獲得超12個贊

所以,我發(fā)現(xiàn)以下工作...


static void Main(string[] args)

{

    Task watchTask = WatchCollection();


    // Do other stuff here, while watching...

}


private static async Task WatchCollection()

{

    using (var cursor = collection.Watch())

    {

        await cursor.ForEachAsync(change =>

        {

            // process change event

        });

    }

}

當(dāng)我試圖這樣做時,這不起作用:


static void Main(string[] args)

{

    using (var cursor = collection.Watch())

    {

        Task watchTask cursor.ForEachAsync(change =>

        {

            // process change event

        });

    }


    // Do other stuff here, while watching

}

因此,實際的 ForEachAsync 任務(wù)被等待,而包裝整個功能的外部任務(wù)則未等待...我要么太累了,要么對任務(wù)不夠熟悉,無法很好地解釋為什么一個有效而另一個不起作用。


查看完整回答
反對 回復(fù) 2022-08-20
  • 2 回答
  • 0 關(guān)注
  • 107 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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