internal class Program
{
private static BackgroundWorker _worker;
private static void Main()
{
_worker = new BackgroundWorker();
_worker.DoWork += DoWork;
_worker.RunWorkerAsync();
//Спим, иначе background thread помрет
Thread.Sleep(1000);
}
private static void DoWork(object obj, EventArgs e)
{
try
{
Foo foo = FooImpl;
foo("Bar");
}
catch (Exception ex)
{
Debug.WriteLine("Catched");
}
}
private static List<byte> FooImpl(string s)
{
// try
// {
throw new ApplicationException();
// }
// catch (Exception ex)
// {
// throw;
// }
}
private delegate List<byte> Foo(string s);
}
У меня это работает без проблем.
Framework 2.0. С# ISO2