我有一个不重要的任务;如果使用该网站,它应该在一段时间内运行。ASP.NET/Debug中的后台任务
所以,我想这个办法:http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
任务可能很长,所以我想这是异步的......,这样的导航是不是由后台任务停止。
我不明白的是,当我开始调试(附加到进程w3wp.exe),我不能在网站上导航,直到我停止调试?
下面是代码(ResourceService是在同一个项目上ISS托管的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));
}
如果我明白:线程包含在(w3wp)进程中(进程?),这样即使任务在另一个线程中启动并且是异步的,在调试期间停止在断点上(在异步任务中)进程的线程(因此我无法再导航)? – W3Max 2009-08-27 01:27:16
当您正在调试时,您可以查看VS中的菜单项:Debug | Windows | Threads,以查看并在该进程拥有的所有线程之间切换。是的,他们都会被暂停。希望能帮助你。 – 2009-08-27 04:17:28