2009-09-03 3 views
1

У меня есть проблема отладки Invoke() или BeginInvoke() в Visual Studio 2008.Как отлаживать * Invoke() в Visual Studio 2008

Например, в коде ниже отладчика изломов на Invoke() вызова. Мне бы хотелось, чтобы он разбился на Console.WriteLine(p.ToString());, потому что именно там генерируется исключение. В коде, столь же простом, как это, это не такая уж большая проблема, но она может стать очень раздражающей в более сложном коде. (С BeginIvoke() вещи даже ухудшаются, потому что тогда отладчик разбивается на Application.Run(new Form1());)

Есть ли способ сделать отладчик нарушенным по месту первоначального исключения?

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     Invoke(new Action(MyMethod)); 
    } 

    private void MyMethod() 
    { 
     object p = null; 
     Console.WriteLine(p.ToString()); 
    } 
} 

ответ

4

меню Debug> Исключения> Проверить «кинули» окно для любого исключения вы хотите, чтобы ворваться в отладчик в точке он брошен.

0

Что-то еще вы можете сделать, поскольку вы отправляетесь в эту область разработки, чтобы включить окно отладки . Если вы нажмете точки останова и выполните код, обратите внимание на потоки (вы даже можете назвать их для пояснения), чтобы помочь вам лучше понять, что происходит, когда ваш код выполняет (и вызывает).

Это особенно полезно когда вы используете фоновые потоки, таймеры, события и т. д., и вам нужно вернуться к потоку пользовательского интерфейса.

Смежные вопросы