Re[2]: Асинхронное выполнение длительной операции в другом AppDomain
От: Shefango  
Дата: 06.06.13 10:58
Оценка:
Здравствуйте, 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.

Не могли бы вы пояснить ваше предложение подробнее?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.