У меня есть задача, которая не важна; он должен запускаться время от времени, если используется веб-сайт.
Итак, я попробовал этот подход: http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
Задача может быть длинной, поэтому я хочу, чтобы она была асинхронной ... чтобы фоновая задача не остановила навигацию.
Чего я не понимаю, так это того, что когда я начинаю отладку (присоединяюсь к процессу w3wp.exe), я больше не могу перемещаться по сайту, пока не перестану отлаживать?
Вот код (ResourceService является службой WCF, размещенной на МКС в том же проекте):
private void CacheItemRemoved(string taskName, object seconds, CacheItemRemovedReason r)
{
switch (taskName)
{
case MedianamikTasks.UpdateResources:
if (Config.EnableAutoResourceUpdate)
{
ThreadStart threadStart = ResourceService.UpdateResources;
var thread = new Thread(threadStart) {IsBackground = true};
thread.Start();
//Do not use... : http://csharpfeeds.com/post/5415/Dont_use_the_ThreadPool_in_ASP.NET.aspx
//ThreadPool.QueueUserWorkItem(x => ResourceService.UpdateResources());
}
break;
}
AddTask(taskName, Convert.ToInt32(seconds));
}