Асинхронная трассировка стекаC#

Место общения программистов C#
Ответить
Anonymous
 Асинхронная трассировка стека

Сообщение Anonymous »

У меня есть следующий код в приложении WPF
При возникновении исключения единственный стек вызовов:
WpfApp119.ViewModel.Compute() Line 23 C#
WpfApp119.ViewModel.LoadData.AnonymousMethod__0_0() Line 18 C#
System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread threadPoolThread, System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown
System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref System.Threading.Tasks.Task currentTaskSlot, System.Threading.Thread threadPoolThread) Unknown
System.Threading.ThreadPoolWorkQueue.Dispatch() Unknown
System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() Unknown


Поэтому вы не знаете, был ли он вызван из MainWindow.Button_Click1 или MainWindow.Button_Click2.
Таким образом, если бы этот код был в реальном приложении или в тесте, как бы вы определили, откуда поступил вызов?
public class ViewModel
{
public async Task LoadData()
{
await Task.Run(() => Compute());
}

private void Compute()
{
throw new Exception("");
}
}

public partial class MainWindow : Window
{
private ViewModel _viewModel = new();

public MainWindow()
{
InitializeComponent();
}

private async void Button_Click1(object sender, RoutedEventArgs e)
{
await _viewModel.LoadData();
}

private async void Button_Click2(object sender, RoutedEventArgs e)
{
await _viewModel.LoadData();
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... tack-trace
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»