ThreadPool.QueueUserWorkItem новая форма CreateHandle Deadlock - PullRequest
0 голосов
/ 27 апреля 2010

У меня есть тема, которая должна создать всплывающее окно. Я запускаю поток, используя ThreadPool.QueueUserWorkItem (новый WaitCallback (CreatePopupinThread)) Тема Thew создает новую форму. Приложение освобождается в новом конструкторе Form в CreateHandle. Рабочая тема заблокирована ... Как я могу это исправить?

так я создаю форму

var form = new ConfirmationForm
                           {
                               Text = entry.Caption,
                               Label = entry.Text,
                           };

В конструкторе поток заходит в тупик

public ConfirmationForm()
        {
            InitializeComponent();
        }

Ответы [ 2 ]

0 голосов
/ 27 апреля 2010

Я исправил проблему ... Сработал тупик, потому что начало шага было выполнено в событии, активированном формой ... Я переместил его в событие Shown, и теперь оно работает нормально ...

0 голосов
/ 27 апреля 2010

Я думаю, что было бы лучше создать «всплывающее окно» в потоке пользовательского интерфейса, а затем создать поток во «всплывающем окне» для обработки того, что вы хотите, чтобы оно делало.

Как я и подозревал, вы не можете отобразить форму, созданную в потоке без пользовательского интерфейса.
Смотрите этот ответ: Возможно построить форму в фоновом потоке, а затем отобразить в потоке пользовательского интерфейса

...