Próbuję znaleźć sposób na śledzenie przepływu wykonywania zadań asynchronicznych w sposób, który byłby łatwy do zrozumienia w odniesieniu do zadania, jaki był pierwotny przepływ, który go zainicjował.Śledzenie przepływu zadań C#/.NET
Potrzebuję go głównie do rejestrowania, debugowania i zachowywania sortowania stosu dla określonego przepływu wykonywania.
na przykład: jeśli mam serwer z wieloma klientami z wielu adresów IP i serwer musi wykonać przepływ pracy dla każdego klienta, który obejmuje wiele akcji asynchronicznych, a tym samym obejmuje wiele różnych zadań na przepływ wykonania; rejestrowanie takiego przepływu jest trudne, szczególnie w przypadku korzystania z mechanizmu asynchronicznego/oczekującego.
Nie znalazłem sposobu na owijanie zadań w taki sposób, aby dla każdego wykonywanego zadania znałem początkowy opis przepływu podczas rejestrowania, na przykład, gdy uruchamiam nowy przepływ zadań dla akcji z opis - "Dbanie o klienta 10.0.3.4" chcę móc dodać ten opis do każdego elementu dziennika wychodzącego z tego przepływu w dowolnym zadaniu, które z niego utworzono.
Podczas korzystania z wątków tylko jego łatwe, ponieważ masz zmienne statyczne wątku. z zadaniami jest niemożliwe ... Próbowałem nawet utworzyć własny program do planowania zadań, który będzie owijał każde zadanie, które go używa (nawet gdy używa się metod async/await), ale dostał się w ślepy zaułek, ponieważ baza harmonogramu zadań czasami używa nowego wątku (nawet jeśli nie było żadnej niejawnej prośby o użycie nowego wątku) - metoda "TryExecuteTaskInline" może czasami działać w nowym wątku.
Każdy pomysł lub sugestia, w jaki sposób mogę to osiągnąć?
Co powiesz na pokazanie nam kodu z tym, co próbujesz zrobić? –