Mam starszego projektu, który ma setki podpisów metody dla zdarzenia WinForm. Oczywiście obecne, których nie chcę iść i włączam BeginInvoke/EndInvoke, ponieważ spowoduje to problemy z przekierowaniem interfejsu użytkownika.Jak ustalić, czy metoda jest asynchroniczna w czasie wykonywania
Jednak potrzebuję (z powodu zakleszczenia), aby móc oznaczyć te sygnatury jako asynchroniczne, aby obsłużyć niektóre polecenia asynchroniczne, które musimy wykonać. Żaden inny sposób nie prowadzi do niczego poza impasem.
Mogę z powodzeniem wywołać zdarzenie za pomocą BeginInvoke i działa idealnie i asynchronicznie poprawnie itd. Jednak powoduje to podzielenie go na inny wątek i łamie stare implementacje, których nie chcemy przechodzić i tworzyć asynchroniczne i wywoływać świadomy.
Tak więc badałem używając event.GetInvokationList() i przepuszczając je i wywołując osobno. Jeśli metoda była asynchroniczna, wywołaj metodę begin/end. W przeciwnym razie wywołaj go prosto w wątku UI.
Jedynym moim problemem jest to, że nie mogę znaleźć żadnej drogi przez odbicie, aby stwierdzić, czy sygnatura metody jest asynchroniczna, czy też nie.
Ktoś wie, jak dowiedzieć się, czy metoda jest asynchroniczna, czy nie z MethodInfo lub coś innego z wartości GetInvokationList()?
Dzięki!
Działa idealnie! Dzięki! –