Ich habe einen Windows-Dienst, der einen Job asynchron alle paar Minuten ausführt, manchmal der Windows-Dienst ausgeführt und der vorherige Auftrag wurde nicht beendet, mit Threading gibt es eine Möglichkeit, den neuen Job, wenn der vorherige man ist nicht fertig, so dass es anfängt zu laufen, wenn der erste Job beendet ist?Warteschlange Ausführung von Threads in C#
Antwort
Sie könnten Ihre eigene Producer/Consumer-Warteschlange von Jobs erstellen - effektiv einen Single-Thread-Threadpool.
Dies ist einfach in .NET 4 mit BlockingCollection<T>
; vor dann ist es ein wenig trickier, aber nicht auch schlecht.
Leider verwende ich 3.5 hast du einen Link zu einem Beispiel in 3.5? Danke – ryudice
@ryudice: Es gibt einige Beispielcode hier: http://stackoverflow.com/questions/530211/creating-a-blocking-queuet-in-net/530228#530228 –
@Jon: Mit 3.5 sollte das OP Task verwenden Parallel Lib, überprüfen 'cancelToken.IsCancellationRequested' und speichern Aufgabe in Warteschlange
müssen Sie die Warteschlange im Hauptsteuerungsdienst implementieren. über den Abschluss des Threads und/oder periodisch können Sie Warteschlange überprüfen und nächste Aufgabe starten.
- 1. Verwendung von Threads und Warteschlange in VC++
- 2. C++ Warteschlange von Funktionen
- 3. Boost :: Threads Ausführung Reihenfolge
- 4. Einfache Möglichkeit, Warteschlange mit N Threads in C# zu verarbeiten?
- 5. Python Threads und Warteschlange Beispiel
- 6. Wie Warteschlange Trigger-Ausführung auf einem Azure Webjob
- 7. Verwendung von Threads in C++
- 8. Abbrechen von C# -Threads
- 9. Kompilieren von C++ - Threads
- 10. Array von Threads C#
- 11. Warteschlange für Async-Code zur sequenziellen Ausführung
- 12. Hintergrund Threads in C#
- 13. Unerwartete Semaphor Verhalten, Threads Ausführung jenseits von sem_wait()
- 14. Kann sequentielle Ausführung von Thread in C++ nicht erzwingen? Sackgasse?
- 15. Threads in C++ Builder
- 16. C++ Multithreading mit einer festen Anzahl von Threads und einer threadsafe-Warteschlange
- 17. C++ - Threads und mehrere Warteschlangen
- 18. Schreiben in eine Chronik-Warteschlange mit mehreren Threads -> java.nio.BufferOverflowException
- 19. Java - Probleme mit der Ausführung von Threads nacheinander
- 20. C++ - verzögerte Ausführung von Code
- 21. Senden von Nachrichten zwischen Threads in C#
- 22. Leistung von Threads in C++ 11
- 23. Erstellen eines Array von Threads in C#
- 24. Messen von Speicherdruck/GC-Ausführung in C#
- 25. Seltsame Ausführung von Get Accessor in C#?
- 26. C++ - Warteschlange - einfaches Beispiel
- 27. In der Ausführung eines Programms sind Ereignisse wie Threads? WPF
- 28. Abgelehnt Ausführung von org.elasticsearch.transport.TransportService Fehlern
- 29. Erstellen einer Multithread-Warteschlange (Consumer/Producer) in C++
- 30. Arbeiten mit Threads in C++
Hört sich an, als müssten Sie vorsichtig sein, um keinen unendlich wachsenden Auftragsbestand zu bekommen, wenn sie schneller in die Warteschlange gestellt werden, als sie abschließen können. Stellen Sie sicher, dass eine maximale Anzahl an Warteschlangen vorhanden ist (z. B. nur eine!) Oder nehmen Sie einfach den einfachen Ausweg und verhindern Sie, dass ein neuer Job gestartet wird, wenn ein alter vorhanden ist. –