Jak mogę zachować ślad stosu, gdy wyjątek jest generowany w wątku innym niż UI

Jest to zła forma, ponieważ nie zachowuje śladu stosu:

try { /*... some code that can throw an exception ...*/ }
catch (Exception e)
{
    throw e; // ...Use "throw;" by itself instead
}

Jeśli jednak wyjątek zostanie przechwycony w wątku innym niż interfejs użytkownika, chcę go podnieść do interfejsu użytkownika i obsłużyć go, aby użytkownik otrzymał wiadomość w ten sposób:

try { /*... some code that can throw an exception ...*/ }
catch (Exception e)
{
    Dispatcher.Invoke((Action)(() => { throw; }));
}

Nie mogę jednak użyć słowa kluczowego throw tutaj, ponieważ C # lexer (poprawnie) nie myślirzucać instrukcja znajduje się wewnątrz ałapać. Muszę zamiast tego:

try { /*... some code that can throw an exception ...*/ }
catch (Exception e)
{
    Dispatcher.Invoke((Action)(() => { throw e; }));
}

i ponownie rzuć wyjątek, który traci ślad stosu.

Czy istnieje jakikolwiek (łatwy) sposób obejścia tego problemu (zawsze mogłem spakować ślad stosu w momencie, gdy wyjątek jest gotowy do przełączania wątków, ale wydaje się to hokey)?

Uwaga: widziałemten wątek ale jest to tylko tytuł, a nie treść.

questionAnswers(1)

yourAnswerToTheQuestion