Re[2]: Отчего база не начинает свое создание?
От: AlexNek  
Дата: 26.08.11 11:22
Оценка: +1
Здравствуйте, Буравчик, Вы писали:

Б> AN>Как бороться?


Б> ProgressWorker.Run — асинхронный метод. Он вызывается параллельно с основным потоком.

Я так тоже думал.

Б> В данном коде подразумевается, что будет выполнена реструктуризация, а затем основной поток продолжит выполнение. А на самом деле поток реструктуризации и основной поток работают одновременно. Кто-кого из этих потоков обгонит — не известно.

Фигово только когда реструктуризации медленней.

Б> Вариантов несколько.

Б> Первый — убрать асинхронность (ProgressWorker.Run), т.е. пустить синхронизацию в основном потоке.
UI не понравится.
Б> Второй — синхронизировать два потока между собой. Я приводил код в [url=http://rsdn.ru/Forum/Message.aspx?mid=4282418&only=1]Re: Ошибки первого запуска
Автор: Буравчик
Дата: 24.05.11
[/url]. Этот же код сейчас в репозитории Януса.

По моему, я понял отличия, я делал только WaitOne без DoEvents(), а без этого ProgressWorker.Run видимо не работает.
avalon 1.0rc3 rev 419, zlib 1.2.3
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.