Un modo mooolto veloce per evitare almeno che si inviino piu di una volta le email potrebbe essere:
codice:
//nella funzione che manda le email...
if (!DBFlag.IsBusy)
{
new Thread(() =>
{
DBFlag.IsBusy = true;
//codice per inviare le email
DBFlag.IsBusy = false;
}).Start();
}
IsBusy è un semplice flag, il problema è che non puoi usare Session o application dentro il thred in backgraund per memorizzare il flag. La soluzione (un po' spartana) è salvare questo flag da qualche parte tipo il database o un file txt e wrappare tutto in una classe che nell'esempio su ho chiamato DBFlag.
codice:
public class DBFlag
{
public static bool IsBusy
{
get { //codice che legge il flag dal db o file di testo }
set { //codice che scrive il flag nel db o file di testo }
}
}
EDIT:
ho scritto degli snippets in c# spero si capisca uguale