簡體   English   中英

ASP.NET /調試中的后台任務

[英]Background Tasks in 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.exe)時,除非停止調試,否則我無法在網站上導航了?

只是一個猜測,但是您是否設置了斷點? 一旦您遇到斷點,w3wp進程中的執行就會在該點停止,因此您將無法在站點周圍“導航”。

使用后台工作者。

BackgroundWorker worker;  
worker = new BackgroundWorker();  
worker.DoWork += new DoWorkEventHandler(worker_DoWork);  
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);  
worker.RunWorkerAsync(); 

然后在DoWork處理程序中調用所需的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM