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

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

為什么在添加任務(wù)時會創(chuàng)建列表的新實例?

為什么在添加任務(wù)時會創(chuàng)建列表的新實例?

C#
蕪湖不蕪 2022-12-24 14:11:58
我有一個 asp.net 應(yīng)用程序,用戶可以在其中按下按鈕來啟動長時間運行的操作,并且可以多次這樣做。每次他們這樣做時,我都想將創(chuàng)建的任務(wù)添加到列表中,以便稍后,當(dāng)他們想要進入下一頁時,該頁面會等待列表中的所有任務(wù)完成后再重定向。我有以下結(jié)構(gòu):private List<Task> tasks = new List<Task>();private SemaphoreSlim mutex = new SemaphoreSlim(1, 1);// Simulate some workprivate async Task MyWork(){    int t = 0;    while (t < 5)    {        await Task.Delay(TimeSpan.FromSeconds(5));        t ++;    }}// Called in the button's eventhandlerpublic void DoWork(){    mutex.Wait();    this.tasks.Add(Task.Run(() => MyWork());    mutex.Release();}調(diào)試時我發(fā)現(xiàn)每次 DoWork 訪問任務(wù)列表時,當(dāng)任務(wù)被添加到列表時列表是空的,似乎每次都創(chuàng)建一個單獨的列表實例。另外,當(dāng)我稍后以另一種方法訪問該列表時,該列表在那里是空的。為什么會發(fā)生這種情況,而不是將每個任務(wù)都添加到同一個列表實例中?
查看完整描述

1 回答

?
慕的地10843

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

當(dāng) ASP.NET 收到新請求時,它會創(chuàng)建頁面的新實例。這就是您總是看到空列表的原因。

應(yīng)該做的是讓您的按鈕處理程序創(chuàng)建一個請求 ID(例如,Guid),將該請求插入可靠隊列,然后使用該請求 ID 更新會話狀態(tài)。因此,您擁有的不是任務(wù)列表,而是請求 ID(字符串)列表。然后讓一個單獨的工作進程從該隊列中讀取并執(zhí)行實際工作。最后,“等待”頁面應(yīng)該進行輪詢,直到請求全部完成。


查看完整回答
反對 回復(fù) 2022-12-24
  • 1 回答
  • 0 關(guān)注
  • 108 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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