Sto scrivendo un programma Visual C# che esegue un ciclo continuo di operazioni su un thread secondario. Occasionalmente quando quel thread termina un'attività, voglio che attivi un eventhandler. Il mio programma lo fa, ma quando viene attivato il gestore eventi, il thread secondario attende fino al termine del gestore eventi prima di continuare il thread. Come posso farlo continuare? Ecco il modo in cui attualmente lo ho strutturato ...Come faccio a far funzionare un eventhandler in modo asincrono?
class TestClass
{
private Thread SecondaryThread;
public event EventHandler OperationFinished;
public void StartMethod()
{
...
SecondaryThread.Start(); //start the secondary thread
}
private void SecondaryThreadMethod()
{
...
OperationFinished(null, new EventArgs());
... //This is where the program waits for whatever operations take
//place when OperationFinished is triggered.
}
}
Questo codice fa parte di un'API per uno dei miei dispositivi. Quando viene attivato l'evento OperationFinished, voglio che l'applicazione client sia in grado di fare tutto ciò che è necessario (cioè aggiornare la GUI di conseguenza) senza interferire con l'operazione API.
Inoltre, se non si desidera passare alcun parametro al gestore eventi, la mia sintassi è corretta utilizzando OperationFinished(null, new EventArgs())
?
quale thread vuoi l'evento 'OperationFinished' di essere sollevato su? Non può essere il tuo thread secondario, dal momento che richiede esplicitamente di non bloccarlo. Deve essere il thread primario, quindi, o stai bene con il fatto di essere generato su un thread diverso appena creato solo allo scopo di callback asincrono? –