Articles of multithreading

Chiamata asincrona nel metodo sincrono

Ecco il semplice esempio: public event EventHandler CookinDone = delegate{}; public void CoockinRequest(){ var indicator = new ActivityIndicator(); ActivityIndicator.Show(“Oooo coockin’ something cool”); var bw = new BackgroundWorker(); bw.DoWork += (sender, e) => CockinService.Cook(); bw.RunWorkerCompleted += (sender, e) => { indicator.Hide(); CookinDone.Invoke(this,null); }; bw.RunWorkerAsync(); } Ora, ogni volta che uso questo metodo devo intercettare l’evento CookinDone […]

Timer C # vs Thread in servizio

Ho un servizio che colpisce un database ogni 10 se ottiene i dati se ce n’è uno. Il fatto è che l’elaborazione di questi dati può richiedere fino a 30 secondi. Se utilizzo un timer con intervallo di 10 secondi, il servizio riceverà gli stessi dati due volte. L’effetto che sto cercando di ottenere (solo […]

Desideri distriggersre un pulsante per 30 secondi dopo il clic e triggersrlo automaticamente

Sono su un progetto e questo progetto deve prendere a caso 16 byte da random.org. Posso prenderlo dal sito web e scrivere questo 16 byte in un messaggio di testo. Ho anche un pulsante di aggiornamento. Ogni volta che questo pulsante viene cliccato, arriva un nuovo 16 byte ed è scritto in textedit. Voglio impedire […]

Il modo migliore per chiamare molti servizi web?

Ho 30 sub-società e ognuna ha implementato il proprio servizio web (con diverse tecnologie). Ho bisogno di implementare un servizio web per aggregarli, ad esempio, tutti i servizi web delle sub-società hanno un metodo web con il nome GetUserPoint(int nationalCode) e ho bisogno di implementare il mio servizio web che chiamerà tutti loro e raccoglierà […]

Perché i campi di impostazione (o non) in un costruttore sono thread-safe?

Diciamo che hai una class semplice come questa: class MyClass { private readonly int a; private int b; public MyClass(int a, int b) { this.a = a; this.b = b; } public int A { get { return a; } } public int B { get { return b; } } } Potrei usare questa […]

Barriere interbloccate e memoria

Ho una domanda sul seguente codice di esempio ( m_value non è volatile e ogni thread viene eseguito su un processore separato) void Foo() // executed by thread #1, BEFORE Bar() is executed { Interlocked.Exchange(ref m_value, 1); } bool Bar() // executed by thread #2, AFTER Foo() is executed { return m_value == 1; } […]

Come riservare una riga per l’input nella Console multi-thread?

Questa domanda mi ha infastidito da un po ‘di tempo e mi rendo conto che è difficile descrivere quello che sto cercando. Voglio essere in grado di riservare una riga per l’immissione di testo in un’applicazione console C #, consentendo comunque l’aggiornamento di altre informazioni nelle righe rimanenti. Più specificamente, mi piacerebbe creare un piccolo […]

EventWaitHandle ha un MemoryBarrier implicito?

Nuovo su questo sito, quindi fammi sapere se non sto pubblicando in modo accettato. Ho spesso codificato qualcosa seguendo le linee dell’esempio qui sotto (con cose come Dispose ommited per chiarezza.). La mia domanda è, sono necessari i volatili come mostrato? O il ManualResetEvent.Set ha una barriera di memoria implicita come ho letto Thread.Start fa? […]

Come rendere il codice C (P / invoke) chiamato da C # “Thread-safe”

Ho un semplice codice C che usa una singola variabile globale. Ovviamente questo non è thread-safe, quindi quando lo chiamo da più thread in C # usando P / invoke, le cose vanno a male. Come posso importare questa funzione separatamente per ogni thread o renderla thread-safe? Ho provato a dichiarare la variabile __declspec(thread) , […]

C # AsyncCallback crea un nuovo thread?

Ho scritto un HttpListener che ascolta su una delle porte: httpListener.BeginGetContext(new AsyncCallback(ListenerCallback), httpListener); ListenerCallback gestisce qualsiasi richiesta ricevuta sul listener uri. Se si verifica un’eccezione durante la richiesta di gestione, viene eseguita una routine di diagnostica, che tenta di colpire il listener uri solo per verificare se il listener è effettivamente vivo e in ascolto […]