Attualmente sto costruendo un sito web Asp.Net che permetterà di importare dati in diversi formati in un database. Lo stato di importazione dei singoli lavori di importazione è visibile a tutti gli utenti e, dato che un utente dispone di privilegi sufficienti, può anche interrompere un'importazione avviata da un altro utente. Se un'importazione passa attraverso i dati viene scritta su un'istanza sql-server. (La gestione dei dati è fatta attraverso la negazione)
Avrei bisogno di alcuni suggerimenti sulle migliori pratiche per costruire un threadpool condiviso che consenta l'annullamento delle attività.
Fino ad ora ho pensato che qualcosa del genere potesse essere implementata al meglio usando una coda di blocco seguendo uno schema produttore-consumatore. Ogni utente può generare lavori raccolti in un singolo servizio che poi aggiunge il lavoro alla coda. Il servizio dovrebbe quindi contenere anche un elenco separato con l'ID del lavoro e i relativi token di annullamento.
Modifica: la versione utilizzata è Asp.Net MVC 5. La coda di blocco utilizza la libreria parallela attività. La dimensione dei file da importare varia da 50kb a 5 mb.