Ho un servizio Windows scritto in .NET 4 che crea più thread che contengono cicli infiniti mentre si esegue (in esecuzione). Quando interrompo il servizio, il booleano in esecuzione diventa falso e interrompiamo il ciclo while e una volta che ciascun thread lo fa, il servizio si interrompe definitivamente.Come posso cancellare un messaggio Microsoft ServiceBus MessageReceiver?
Nel frattempo, chiama oMessageReceiver.Receive (TimeSpan.FromSeconds (30)). così a volte quando provo a interrompere il servizio, devo aspettare fino a 30 secondi affinché il processo Receive() vada in timeout.
Un'opzione potrebbe essere quella di ridurre il timeout da 30 secondi a qualcosa di più piccolo. Non sono sicuro di quali penalizzazioni dovessero comportare, ma dal momento che il processo non funziona senza un BrokeredMessage, vorrei davvero mantenere l'ascoltatore aperto il più spesso e il più a lungo possibile.
Vedo che c'è un metodo .BeginReceive() sul MessageReceiver. Credo che ci sarebbe un modello di programmazione che potrei usare qui per evitare che il mio servizio si blocchi mentre attendevo il timeout di Receive. Qualcuno può descrivere come utilizzare le funzioni APM Begin/End in un servizio Windows che funziona all'infinito?