Здравствуйте, Sharov, Вы писали:
S>А попробуйте делегировать создание потока самому домену, S>т.е. есть некий worker, вы вызываете у него метод, и в этом методе S>создаете поток. Потом выгружаете домен. Если не ошибаюсь, можно S>синхронизироваться через какой-нибудь соотв. статический примитив.
Не совсем понял вашу мысль...
Мой небогатый опыт взаимодействия с .NET Application Domains показывает, что если создавать AppDomain в потоке UI WinForms (как во втором листинге с закомментированным Thread t = new Thread...), то код в нем будет исполнятся в том же потоке UI WinForms (и, соответственно, фризить форму). Это решает мою проблему, но хотелось бы показывать пользователю прогресс выполнения и дать возможность отмены.
Или вы предлагаете использовать какой-нибудь механизм асинхронных вызовов из .NET Framework, типа BackgroundWorker или AsyncOperation? Эти варианты мне не подходят, так как мне нужно работать с потоком, у которого ApartmentState = STA. А у потоков из пула .NET ApartmentState = MTA.
Не могли бы вы пояснить ваше предложение подробнее?