Pracuję nad uaktualnieniem systemu planowania zadań, którego używamy w domu, który korzysta z Quartz.net. Patrząc na źródło najnowszej wersji Quartz, zauważyłem, że nadal używa on własnej implementacji puli wątków, w przeciwieństwie do znacznie ulepszonej puli wątków (lub czegokolwiek z System.Threading.Tasks), która zaczęła być dostarczana z .NET 4.0.Quartz.net + zadanie Biblioteka równoległa
Chciałbym wiedzieć, czy ktokolwiek pomyślnie wdrożył system planowania zadań, który używa Quartz.net do jego funkcji planowania i TPL do łączenia wątków. Czy stosunkowo łatwo jest wymieniać pulę wątków Quartz na pulę licencji TPL? Czy Quartz jest nadal przydatny w świecie zadań? Alternatywnie, tak jak jestem w świetnych ulepszeniach z pulą wątków .NET 4.x (świadomość rdzeniowa, lokalne kolejki, ulepszone blokowanie itp.), Pula wątków Quartz jest wystarczająco dobra dla typowych gruboziarnistych zadań tła i nie jest warta wysiłek zmuszenia TPL do miksu?
Z góry dziękujemy za wszelkie uwagi dotyczące używania (lub nie używania) tych dwóch narzędzi.
Dzięki. Sądzę, że potwierdziłeś moje przeczucie, że być może nie potrzebujesz puli wątków superładowanych turbo do uruchamiania wolnych zadań nienadzorowanych w tle. –
Czy są potencjalne pułapki przy użyciu tych dwóch kombinacji? Aby podać przykład, chcę zaplanować pracę, która po uruchomieniu pobiera jej pracę z bazy danych, a ta praca może składać się z 50-100 pojedynczych elementów pracy, które chcę wykonać w Parallel.ForEach. Czy są warunki, w których to wybuchłoby? – avesse
Powinny one współpracować w porządku. Po prostu stosuj standardowe procedury rejestrowania i obsługi wyjątków. Pomyśl o tym, jakbyś rzucił główny program Program.cs, to to samo. Możesz rozważyć ustawienie flagi ponownej próby w kontekście błędu lub po prostu czekać na kolejne wykonanie - dobrze jest, aby zadanie było idempotentne. –