1

Я пытаюсь обрабатывать ошибки, которые произошли в других потоках программа .NET CF как ниже:Как обрабатывать ошибку в другой теме?

static void Main() 
{ 
    Thread t = new Thread(Start); 
    t.Start(); 
    ... 
} 

void Start() 
{ 
    ... Exception here 

} 

В моей ситуации, поставив попробовать поймать в методе Start невозможно. Как я могу справиться с этим в глобальном коде?

+0

Может кто-то с большим количеством репутации, чем у меня тег это с «обработкой исключений» или подобными? – Eltariel

+0

Повторная маркировка - сделано. –

+0

Это не похоже. Я прошу аналогичный метод, который делает NUnit. Но среда теперь .NET CF –

ответ

4

Вы можете использовать AppDomain.UnhandledException, но вы не можете «восстановить» приложение из этого, лучшее, что вы можете сделать, это показать сообщение пользователю и изящно выйти из строя.

+0

Я забыл, что главное - для .NET CF. Есть ли способ сделать что-то вроде NUnit? Если в другом потоке произошла ошибка, он все равно продолжает двигаться. –

+0

Мои извинения, я не знаком с .Net CF. – JustABill

+1

@ markattwood.Если вы переходите к тому, как NUnit игнорирует исключения в нетестовых потоках, см. Статью в блоге, которую я написал, которая описывает ту же самую проблему \ с помощью тестового бегуна ReSharper. Он контролируется legacyUnhandledExceptionPolicy. http://gojisoft.com/blog/2010/05/14/resharper-test-runner-hidden-thread-exceptions/ –

5

Не вдаваясь в лучшие практики обработки исключений, вы можете использовать метод прокладки, чтобы делать то, что вы хотите, например.

static void Main() 
{ 
    Thread t = new Thread(Shim); 
    t.Start(); 
    ... 
} 

void Shim() 
{ 
    try 
    { 
    Start(); 
    } 
    catch 
    { 
    //If there's something you can really do about it... 
    } 
} 

void Start() 
{ 
    ... Exception here 

} 

Update

Если вы имеете в виду, как NUnit игнорирует исключения на не-тестирования потоков см в блоге статью я написал, что описывает тот же вопрос \ функции с тестируемым ReSharper бегун. Он контролируется legacyUnhandledExceptionPolicy.

http://gojisoft.com/blog/2010/05/14/resharper-test-runner-hidden-thread-exceptions/

+0

+1, поскольку я как раз собирался написать то же самое;) – Eltariel

+0

Он по-прежнему не работает, если метод Start создает новый поток, и внутри него возникает исключение. Я делаю тестовый проект для Pocket PC env, и он очень похож на NUnit. –

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