Articles of multithreading

Transaction (Process ID) era deadlock su risorse di blocco con un altro processo ed è stato scelto come vittima del deadlock. Rieseguire la transazione

Ho un’applicazione C # che sta inserendo dati nella tabella di SQL Server (2008) utilizzando la stored procedure. Sto usando multi-threading per fare questo. La stored procedure viene chiamata dall’interno del thread. Ora la mia stored procedure utilizza “tablock” durante l’inserimento dei dati. Durante l’esecuzione di questo codice viene visualizzato il seguente errore: “Transaction (ID […]

Come aspettare un singolo evento in C #, con timeout e cancellazione

Quindi il mio requisito è quello di avere la mia funzione in attesa della prima istanza di un event Action proveniente da un’altra class e un altro thread, e gestirlo sul mio thread, permettendo l’attesa di essere interrotta dal timeout o da CancellationToken . Voglio creare una funzione generica che posso riutilizzare. Sono riuscito a […]

Più chiamate simultanee a SqlCommand.BeginExecuteNonQuery che utilizza lo stesso SqlConnection

Ho un codice C # funzionante che usa un SqlConnection per creare tabelle temporanee (ad esempio #Foo), chiama proc memorizzati per riempire quelle tabelle temporanee e restituire i risultati al client C #, usa c # per eseguire calcoli complessi su quei risultati e usa il risultati del calcolo per aggiornare una delle tabelle temporanee […]

“Task asincrono quindi attendere Task” vs “Task quindi restituire attività”

Domanda veloce.. Per avere una solida conoscenza di base sulla programmazione asincrona e l’ await vorrei sapere qual è la differenza tra questi due frammenti di codice quando si tratta di multi-threading e la sequenza e il tempo di esecuzione: Questo : public Task CloseApp() { return Task.Run( ()=>{ // save database // turn off […]

A che cosa serve passare il metodo di annullamento di chiamata a Task Class?

Ecco un codice di esempio che crea una nuova attività che simula un processo in esecuzione prolungata. Non c’è molto sull’attività in quanto tale e si concentra esclusivamente sulle funzionalità di annullamento. Uso un token di cancellazione per annullare l’attività e il codice funziona correttamente per me . CancellationTokenSource CTS= new CancellationTokenSource(); Task PTask = […]

L’interruzione del thread lascia transazioni di zombie e interruzione di SqlConnection

Sento che questo comportamento non dovrebbe accadere. Ecco lo scenario: Avvia una transazione sql long-running. Il thread che ha eseguito il comando sql viene interrotto (non dal nostro codice!) Quando il thread ritorna al codice gestito, lo stato di SqlConnection è “Chiuso”, ma la transazione è ancora aperta sul server sql. SQLConnection può essere riaperto, […]

C # Background La cultura del lavoro

Mi piacerebbe impostare la cultura per tutta la mia applicazione. Ho provato il seguente: Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(wantedCulture); Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(wantedCulture); Application.CurrentCulture = CultureInfo.CreateSpecificCulture(wantedCulture); Funziona per il thread corrente, ma in seguito creerò e avvierò un thread di background worker. Quando creo il worker, il thread corrente viene eseguito con wantedCulture ma il thread worker verrà […]

È corretto eseguire GC.Collect in un thread in background?

Seguendo questa risposta SO , sto facendo: ThreadPool.QueueUserWorkItem( delegate { GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); }); Il mio objective è quello di eseguire una garbage collection dopo aver chiuso un modulo di WinForms con molte immagini / controlli PictureBox per garantire che non abbia più immagini in memoria. (Credo di seguire le istruzioni di Jon Skeet ). […]

Sono l’assegnazione di riferimento e la lettura delle operazioni atomiche?

Ho trovato diverse domande su questo stesso argomento ma relative a variabili generali (valore e tipi di riferimento) La risposta accettata da questa domanda dice: La partizione I, sezione 12.6.6 della specifica CLI afferma: “Una CLI conforms garantisce che l’accesso in lettura e scrittura a posizioni di memoria correttamente allineate non più grandi della dimensione […]

Qualunque svantaggio nel bloccare una raccolta rispetto a una SyncRoot?

Mi chiedo se ci siano degli svantaggi nel bloccare su una raccolta come una List , HashSet , o un Dictionary piuttosto che un semplice object . Nota: nei seguenti esempi, questo è l’unico punto in cui si verificano i blocchi, non è bloccato da più posizioni, ma il metodo statico può essere chiamato da […]