0

我有一个线程需要创建一个弹出窗口。我使用 ThreadPool.QueueUserWorkItem(new WaitCallback(CreatePopupinThread)) 启动线程,线程创建了一个新表单。应用程序在 CreateHandle 处的新 Form 构造函数中停止工作。工作线程被锁定......我该如何解决这个问题?

这就是我创建表单的方式

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

在构造函数中线程进入死锁

public ConfirmationForm()
        {
            InitializeComponent();
        }
4

2 回答 2

0

我认为最好在 UI 线程上创建“弹出窗口”,然后在“弹出窗口”中创建一个线程来处理您想要它执行的操作。

正如我所怀疑的,您不能显示在非 ui 线程上创建的表单。
请参阅此答案:可能在后台线程上构造表单,然后在 UI 线程上显示

于 2010-04-27T07:21:54.817 回答
0

我已经解决了这个问题......因为在表单激活事件中完成了胎面开始,所以触发了死锁......我已经将它移到了 Shown 事件中,现在它可以正常工作了......

于 2010-04-27T07:45:10.777 回答