Search code examples
asp.netasp.net-3.5asp.net-2.0request-timed-out

Enable no timeout for one specific page


I have a page that doing something, it can take 1,2 hours or even more... After a while I get request timed out, I want that this specific page will NOT get request timed out - ever(or at least 24 hours).

How do I do it?

Thanks.


Solution

  • You can make a thread with a signal in it to know it its still running or not. I suggest to use a mutex signal because is the only one that can be the same across many pools and threads.

    The thread code can be:

    public class RunThreadProcess
    {
        // Some parametres
        public int cProductID;
    
        // my thread
        private Thread t = null;
    
        // start it
        public Thread Start()
        {
            t = new Thread(new ThreadStart(this.work));
            t.IsBackground = true;
            t.SetApartmentState(ApartmentState.MTA);
            t.Start();
    
            return t;
        }
    
        // actually work
        private void work()
        {
            // while the mutex is locked, the thread is still working
            Mutex mut = new Mutex("WorkA");
            try
            {
                mut.WaitOne();
    
                // do thread work
                all parametres are available here
    
            }
            finally
            {
              mut.ReleaseMutex();
            }
        }
    }
    

    And you call it as

     Mutex mut = new Mutex("WorkA");
    
     try
     {
     if(mut.WaitOne(1000))
     {
       // release it here to start it from the thread as signal
       mut.ReleaseMutex();
       // you start the thread
       var OneAction = new RunThreadProcess();
    
        OneAction.cProductID = 100;
        OneAction.Start();
      }
      else
      {
         // still running
      }
     }
     finally
     {
       mut.ReleaseMutex();
     }