[英]multiple requests at the same time
當多個請求同時到達我的 controller 時,我遇到了 C# 異步和等待問題。 我需要請求一個一個地執行,而不是同時執行。 當第一個請求將數據保存在數據庫中時,然后從隊列中獲取下一個請求
我認為在那里放置一些同步就足夠了。 讓我們假設以下代碼:
public async Task GetData()
{
var result = await db.GetDataFromDatabase();
return result;
}
您可以聲明SemaphoreSlim
類型的私有字段,例如:
private readonly SemaphoreSlim _getDataSem = new SemaphoreSlim(1, 1);
然后修改方法的主體:
public async Task GetData()
{
_getDataSem.Wait();
try
{
var result = await db.GetDataFromDatabase();
return result;
}
finally { _getDataSem.Release(); }
}
有多種方法可以同步此類代碼,例如Semaphore
、 lock
等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.