Re: Взаимодействие потоков в C#
От: andreich78 Россия  
Дата: 15.09.05 08:07
Оценка: 8 (1)
Здравствуйте, ilya39, Вы писали:

I>Проблема следующая:

I>Приложение не имеет главной формы. Метод Application.Run() принимает потомка ApplicationContext (назовем его appctx). В конструкторе appctx создается и запускается дополнительный поток. Мне надо при определенном событии из дополнительного потока отдать команду главному потоку создать форму и показать ее. Как это сделать? Пробовал обявлять делегат и в дополнительном потоке вызывыть метод appctx, создающий форму, через этот делегат (BeginInvoke) — в результате появляется окно не реагирующее ни на какие события. Как же все-таки это сделать?
а просто mainForm.Invoke(new MyDelegate(mainForm.MethodCompatibleWithMyDelegate))?

I>В конце концов создал форму заранее (в конструкторе appctx). И попробовал показывать через метод Control.BeginInvoke (этой формы). Но оказывается сей метод не работает если форму не показать хотябы раз (Show). А мигать формой при запуске мне не улыбается...


просто создание Handle`а окна в нормальном режиме происходит во время первого показа окна. попробуй сделать
mainForm.CreateHandle();

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