我想計算系統在asp.net中使用C#執行特定操作所用的時間。當用戶點擊一個按鈕以獲得任何結果時,我必須顯示結果以及他們獲得結果所花費的時間。任何人都請告訴我必須提供的代碼以顯示所花費的時間。使用C#在asp.net中處理請求所花費的時間
回答
如果您想測量某個操作需要多長時間,則可以使用StopWatch對象。下面的用法示例:
class Program
{
static void Main()
{
// Create new stopwatch
Stopwatch stopwatch = new Stopwatch();
// Begin timing
stopwatch.Start();
// Do something
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(1);
}
// Stop timing
stopwatch.Stop();
// Write result
Console.WriteLine("Time elapsed: {0}",
stopwatch.Elapsed);
}
}
所以你需要在你的情況做的是開始你的動作/法的執行時啓動秒錶並返回一個視圖/完成執行之前阻止它。然後,您可以使用stopWatch.Elapsed值將其顯示給用戶。
+1。請注意,此處顯示的「Stopwatch」的基本用法只會衡量實際操作花費的時間,忽略服務器端的所有基礎架構代碼以及所有網絡時間/ JavaScript時間 - 因此總是小於用戶觀察的值。 –
我完全同意阿列克謝。 –
原始海報指定ASP.Net。在ASP.Net做最簡單的方法可能是注入這樣的事情到您的global.asax
:
private static ILog log = log4net.LogManager.GetLogger(typeof(Global)) ;
void Application_BeginRequest(object sender , EventArgs e)
{
Stopwatch timer = new Stopwatch();
timer.Start();
Request.RequestContext.HttpContext.Items["timer"] = timer ;
return ;
}
void Application_EndRequest(object sender , EventArgs e)
{
Stopwatch timer = (Stopwatch) this.Request.RequestContext.HttpContext.Items["timer"] ;
timer.Stop() ;
log.InfoFormat("HttpVerb={0}, URL={1}, elapsed time={2}" ,
this.Request.RequestType ,
this.Request.Url ,
timer
) ;
return ;
}
如果你想這樣做特定頁面的基礎上,你需要做同樣的事情,分別掛接Page.PreInit和Page.Unload事件。
而且您幾乎需要使用HttpContext
來保持計時器的持續時間:如果您嘗試使用靜態變量,那麼您將擁有經典的競爭條件。
此答案中提供的代碼不能保證能正常工作。 Stopwatch實例必須由啓動它的完全相同的線程停止,並且ASP.NET運行時可能會在BeginRequest和EndRequest方法之間跳轉線程。這可能會導致記錄不正確的值。 – Levi
正常情況下,一個ASP.Net請求由單個工作線程處理。線程可能被更改的唯一上下文是如果您正在使用異步操作,這可能導致請求的工作線程切換。 (請參閱http://www.lhotka.net/WeBlog/PermaLink,guid,019e3c37-38ed-492e-b769-16e1a57fed0a.aspx和http://piers7.blogspot.fr/2005/11/threadstatic-callcontext-and_02。 html和http://forum.springframework.net/showthread.php?572-CallContext-vs-ThreadStatic-vs-HttpContext&highlight=LogicalThreadContext)。 –
ASP.NET請求處理可以(並且經常!)跳轉線程。請記住:IIS和ASP.NET都在您的應用程序的BeginRequest和EndRequest事件之間運行代碼,並且不保證此代碼同步執行。由於這些事件中的IIS或ASP.NET代碼,可能會發生線程跳轉。有關更多信息,請參閱http://stackoverflow.com/questions/4791208/threadstaticattribute-in-asp-net。 – Levi
- 1. 當uWSGI花費很長時間處理請求時,Nginx超時
- 2. 使用express計算http請求所花費的時間node.js
- 3. SOAP請求花費太長時間來處理大型數據
- 4. 在處理上花費CPU時間與在處理問題上花費的世界時間C++
- 5. AJAX請求花費太長的時間來完成請求
- 6. 如何處理需要花費很長時間才能運行的請求?
- 7. 在JMeter中花費很長時間的第一個HTTP請求
- 8. 在C中花費的時間
- 9. 使用DropWizard處理長時間請求
- 10. 總共花費的時間和所有線程所花費的平均時間
- 11. Android處理在CursorAdapter中花費時間的查詢getView()
- 12. 的Youtube API請求花費
- 13. ASP.net請求處理
- 14. 如何減少在asp.net中填充樹節點所花費的時間c#treeview?
- 15. 在json中花費時間
- 16. PHP/Curl:HEAD請求在某些站點上花費很長時間
- 17. 解析請求花了很長時間來處理
- 18. SQL凡在花費很長的時間來處理SELECT語句
- 19. 避免花費很多時間的請求Apache
- 20. 使用System.currentTimeMillis所花費的時間在android上不能工作
- 21. MapReduce作業所花費的時間
- 22. 加載uiscrollview所花費的時間
- 23. 增加花費時間在C#
- 24. 在ASP.NET中處理AJAX請求
- 25. C#ASP.NET - 使用處理程序的請求
- 26. 使用ajax請求處理請求在ASP.Net MVC 2中的重定向
- 27. 執行SQL請求花費很多時間
- 28. http請求花費太長時間等待服務器響應
- 29. Django花費太多時間來發送請求
- 30. ASP.NET HttpModule請求處理
你是指在服務器端花費的時間(即在ASP.Net代碼中)?或者你的意思是用戶體驗的時間?後者將高度依賴於網絡延遲等,而不是ASP.Net#後端代碼。 – StevieB
我需要計算服務器端所用的時間。 – user3229818