我正在寫一個ASP.NET應用程序。在處理特定類型的請求時,我想要在處理請求後的某個數分鐘內調度一個方法。推遲的方法不需要與提出原始請求的客戶端進行通信,而只是爲了做一些「內務」工作。在ASP.NET上下文中執行此操作的最佳方法是什麼? (如果應用程序域由於某種原因死亡,則不會觸發事件)。在ASP.NET中的請求之後推遲動作的最佳方式是什麼?
1
A
回答
1
在Global.asax中使用此功能來檢查您輸入的請求:
protected void Application_BeginRequest(object sender, EventArgs e)
{
CheckRequest(HttpContext.Current.Request);
}
,如果您的請求是有效的,註冊緩存條目:
private void CheckRequest(HttpRequest request)
{
if (request)
RegisterCacheEntry();
}
private void RegisterCacheEntry()
{
if (HttpRuntime.Cache[CacheItemKey] == null)
{
HttpRuntime.Cache.Add(CacheItemKey, "your key", null,
DateTime.Now.AddSeconds(60), //change to fire in whatever time frame you require
Cache.NoSlidingExpiration,
CacheItemPriority.NotRemovable,
new CacheItemRemovedCallback(CacheItemRemovedCallback));
}
}
然後處理你的函數在回調:
private void CacheItemRemovedCallback(string key, object value, CacheItemRemovedReason reason)
{
// execute your function
}
1
您可以在檢查該請求所需的情況後,從global.asax.cs中的某個應用程序事件(例如,Application_BeginRequest)中啓動一個計時器(System.Timers.Timer)。
然後,在計時器的Elapsed事件的處理程序中,確保您停止計時器。
E.g.把這樣的事情到的global.asax.cs:
System.Timers.Timer _timer = null;
void Application_BeginRequest(object sender, EventArgs e)
{
// check if cleanup must be initiated
bool mustInitCleanup = RequestRequiresCleanup();
if ((_timer == null) && mustInitCleanup)
{
_timer = new System.Timers.Timer(5000);
_timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
_timer.Start();
}
}
void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
_timer.Stop();
_timer = null;
// do cleanup task
}
0
簡單地創建一個新的線程來完成整理工作,並且在開始時它會讓它休眠,無論長時間,您希望服務器在執行操作之前等待。
例如,在某個特定的請求要撥打的DoSomething:
aNewThread = new Thread(Foo);
aNewThread.Start();
public void Foo()
{
Thread.Sleep(5000);
DoSomething();
}
+0
問題是,這個解決方案將一個線程與sleep語句綁定在一起,可能不是線程使用的那個兆字節的棧。 – 2009-01-22 09:32:26
相關問題
- 1. 在ASP.NET上檢測JSON請求的最佳方式是什麼?
- 2. 在Electron中,製作ajax請求的最佳方式是什麼?
- 3. 什麼是推遲信息的最佳方式?
- 4. JSF推遲解析JavaScript的最佳方式是什麼?
- 5. 什麼是在asp.net上顯示錯誤的最佳方式mvc ajax請求
- 6. 什麼是處理失敗的Web請求的最佳方式?
- 7. 什麼是自動化後構建操作的最佳方式?
- 8. 從Windows Powershell發送HTTP請求的最佳方式是什麼?
- 9. 從PHP提交POST請求的最佳方式是什麼?
- 10. 發送多個帖子請求的最佳方式是什麼
- 11. 提供API請求的最佳方式是什麼?
- 12. 在Flux中處理ajax請求的最佳方法是什麼?
- 13. 跟蹤誰在請求什麼數據的最佳方式?
- 14. 什麼是在Asp.net中使用JQuery的最佳方式
- 15. 在ASP.NET MVC中加載JavaScript的最佳方式是什麼?
- 16. 在ASP.NET中使用FDF的最佳方式是什麼?
- 17. 在ASP.NET中保存UICulture的最佳方式是什麼?
- 18. 什麼是在asp.net中實現調度的最佳方式MVC
- 19. 在Asp.Net MVC 3中處理DropDownListFor的最佳方式是什麼?
- 20. 什麼是在ASP.NET中顯示評論的最佳方式?
- 21. 在ASP.NET中顯示縮略圖的最佳方式是什麼?
- 22. 在ASP.Net中打印PDF報告的最佳方式是什麼?
- 23. 在ASP.NET中訂閱事件的最佳方式是什麼?
- 24. 在ASP.NET MVC中編寫表單的最佳方式是什麼?
- 25. 在Grails中完成POST Web服務請求的最佳方式是什麼?
- 26. 在Python 3中發送多個HTTP請求的最佳方式是什麼?
- 27. 在Ajax請求中處理會話超時的最佳方式是什麼?
- 28. 在Rails應用程序中分析PostgreSQL請求的最佳方式是什麼?
- 29. 在Ruby on Rails中發送SOAP請求的最佳方式是什麼?
- 30. 在Ajax請求中發送安全參數的最佳方式是什麼?
我喜歡這個解決方案的最佳;這是一個給我最強大的「呃,我自己應該想到這個。」謝謝! – 2009-01-22 09:34:01