Domanda

Ho un'applicazione ASP.Net che ha bisogno di bisogno di avere qualche lavoro svolto da un'altra macchina. Per fare questo sto lasciando un messaggio sulla coda di visibile a entrambe le macchine. Quando il lavoro è fatto di un messaggio viene lasciato sulla seconda coda.

Ho bisogno l'applicazione ASP.Net di verificare la seconda coda periodicamente per vedere se uno dei compiti sono completi.

Dove è il posto migliore per ma tale ciclo? Global.asax?

Ricordo di aver letto da qualche parte che si può ottenere una funzione chiamata dopo un intervallo. Vorrei che sia adeguato?

È stato utile?

Soluzione

Per le azioni periodiche su asp.net, ho trovato due approcci accettabili:

  1. genera un thread durante Application_Start a global.asax, in un ciclo while (1) fare il lavoro (2) del sonno il filo per un intervallo.
  2. Anche in questo caso in Application_Start, inserire una voce fittizia nella cache asp.net, scade in un certo intervallo e dare voce che la cache di un callback da chiamare quando è scaduto. In quella richiamata, si può fare il lavoro e inserire l'elemento della cache di nuovo allo stesso modo.

In entrambi i casi, è necessario assicurarsi che il filo continua a lavorare, anche se vi capita un errore. Si può inserire un codice di ripristino in SessionStart e BeginRequest per controllare il tuo thread o una voce di cache è lì, e rinnovare se è successo qualcosa ad esso.

Altri suggerimenti

Suppongo che questo è fatto in maniera regolare, e che qualche altro processo pone le voci sulla coda?

Se questo è il caso, si potrebbe mettere qualcosa in Global.asax che all'avvio applicazione crea un thread separato che controlla semplicemente la coda, è possibile utilizzare un timer per avere che il sonno filo per X secondi, quindi controllare i risultati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top