Вопрос

I Разрабатываю приложение в VB 2008 и с помощью фона рабочего для копирования файлов (ы). У меня есть собственная разработанная форма, которая играет анимацию на вершине формы вместе с копией. Для воспроизведения анимации я использую «AxmsComCtl2.axanimation», на выполнение я получаю

«ActiveX Control» 'не может быть создан, потому что текущий поток не находится в однопоточной квартире ».

На поиске я нашел ссылку:Ссылка на форуме

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

Пожалуйста, проведите меня в этом отношении.

С уважением,

Маверик

Это было полезно?

Решение

Вам необходимо использовать делегат и иметь основную тему на самом деле управлять анимацией. Вы вызываете делегата из фоновой резьбы, но он работает в главной ните. Эта страница, второй пост, имеет грубую идею:http://www.vbforums.com/showthread.php?t=377205.

Другие советы

Вы не можете использовать фоновый работа, чтобы оживить этот элемент управления. Это управление ActiveX, требует, чтобы вы создали его в основном потоке вашего приложения. Та же тема, которая создает форму.

Это очень распространенное ограничение для контроля в целом, они не поддерживают резьбу.

Связанная нить не решает вашу проблему. Да, вы можете создать собственную резьбу STA, вызывая SetApartwattate () и указав STA, но теперь вы ничего не можете сделать с формой, которую вы создали на главной ните. Вы получите исключение, когда добавляете элемент управления в форму. Дочерние элементы управления формой должны быть созданы в том же потоке, что и форма.

Это должно вообще не быть проблемой. Анимация должна быть разумно гладкой до тех пор, пока вы держите обработчики событий формы короткими и сдавшими. Если такой обработчик событий должен сделать что-то, что занимает некоторое время (и замораживает анимацию в результате), то пусть BGW выполняет эту работу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top