Articles of multithreading

Il thread dell’interfaccia utente sta bloccando un thread in background che chiama un object COM

Sto lavorando su un’applicazione che comunica con un dispositivo esterno tramite una libreria COM di terze parti. Sto tentando di fare in modo che tutte le comunicazioni con il dispositivo passino attraverso un thread in background, sia per evitare problemi con la comunicazione di rovinare la mia app, sia per eliminare alcune altre complessità introdotte […]

Interlocked.CompareExchange è molto più veloce di un semplice blocco?

Mi sono imbattuto in un’implementazione di ConcurrentDictionary per .NET 3.5 (sono così dispiaciuto di aver trovato il collegamento in questo momento) che utilizza questo approccio per il blocco: var current = Thread.CurrentThread.ManagedThreadId; while (Interlocked.CompareExchange(ref owner, current, 0) != current) { } // PROCESS SOMETHING HERE if (current != Interlocked.Exchange(ref owner, 0)) throw new UnauthorizedAccessException(“Thread had […]

Esecuzione di un altro processo senza il blocco della GUI

Sto avendo problemi a far comparire la mia GUI e non a bloccarmi durante l’esecuzione (e l’attesa) di un processo esterno. In questo caso, driver.exe è un programma molto semplice in cui l’utente fa semplicemente clic su “OK”. Quindi ogni volta che clicco OK, esce. Sto provando semplicemente a fare in modo che il mio […]

In C # Come si legge dal programma DOS eseguito se il programma viene emesso costantemente?

Ho trovato molti esempi di codifica su come eseguire cmd.exe ed eseguire un comando, ed eseguire anche nslookup e interagire, ma il problema che sto avendo è con un particolare programma dos che quando si avvia, non si ferma “outputting” . ecco un codice e inserirò un commento e gli errori che ottengo da C […]

Esiste un equivalente in C # a questo codice Java?

public class ThreadTest { public static void main(String[] args) { Runnable runnable = new Runnable(){ @Override public void run(){ //Code to execute on thread.start(); }}; Thread thread = new Thread(runnable); thread.start(); } } Nel codice C # voglio iniziare una nuova discussione. Ma voglio mantenere il codice che verrà eseguito nel nuovo thread nello stesso […]

C # – In attesa del loop dei messaggi di WinForms

Devo scrivere un’API C # per la registrazione di hotkey globali. Per ricevere il messaggio WM_HOTKEY, utilizzo System.Windows.Forms.NativeWindow e eseguo un proprio loop di messaggi con System.Windows.Forms.Application.Run(ApplicationContext) . Quando l’utente desidera registrare un tasto di scelta rapida, deve eseguire un metodo denominato RegisterHotkey() che arresta il ciclo dei messaggi con System.Windows.Forms.ApplicationContext.ExitThread() , registra il tasto […]

C # .Net exe non si chiude quando il PC viene riavviato, impedendo al riavvio della macchina

Abbiamo uno SmartClient costruito in C # che rimane costantemente aperto quando il PC sta per essere riavviato. Questo interrompe il processo di riavvio a meno che l’utente non chiuda prima SmartClient o che ci sia un altro intervento manuale. Ciò sta causando problemi quando il team dell’infrastruttura installa da remoto un nuovo software che […]

Thread inatteso interrompe l’eccezione usando Task. Perché?

Ho un’applicazione console in esecuzione in un dominio app. Il dominio dell’app viene avviato da un servizio Windows personalizzato. L’applicazione utilizza le attività principali per avviare diverse attività figlio che funzionano. Ci possono essere molte attività genitore con i bambini che corrono in un dato momento mentre il timer cerca un nuovo lavoro. L’handle di […]

Come uccidere manualmente un thread specifico (in esecuzione) da Visual Studio

Ai fini del test, ho bisogno di uccidere manualmente un thread denominato (in una sessione di debug) da Visual Studio o qualsiasi altro strumento che mi consenta di farlo? Ma la finestra Debug di Threads in Visual Studio 2010 ha solo un’opzione Freeze nel menu di scelta rapida del thread e ProcessExplorer di Sysinternal elenca […]

C # Parallel.ForEach utilizza lo stesso thread per le iterazioni della raccolta

Ho un object IEnumerable che voglio passare a Parallel.ForEach, ma l’IEnumerable è implementato usando un metodo C # e yield, e potenzialmente il codice nell’enumeratore non è thread-safe. Stava pensando di usare Parallel.ForEach su questo. Sono sotto il presupposto che l’iterazione interna effettiva dell’IEnumerable di ForEach sia sempre sullo stesso thread, quindi ForEach passa ciascun […]