我有一个需要创建弹出窗口的线程。 我使用ThreadPool.QueueUserWorkItem启动线程(new WaitCallback(CreatePopupinThread)) Thew线程创建一个新表单。应用程序在CreateHandle的新Form构造函数中释放。工人线程被锁定... 我该如何解决这个问题?
这就是我创建表单的方式
var form = new ConfirmationForm
{
Text = entry.Caption,
Label = entry.Text,
};
在构造函数中,线程进入死锁
public ConfirmationForm()
{
InitializeComponent();
}
答案 0 :(得分:0)
我认为最好在UI线程上创建“弹出窗口”,然后在“弹出窗口”中创建一个线程来处理你想要它做的事情。
我怀疑,你不能在非ui线程上显示创建的表单 请参阅此答案:Possible to construct form on background thread, then display on UI thread
答案 1 :(得分:0)
我已经解决了这个问题...... 由于在表格激活事件中已经完成了步骤,所以触发了死锁......我已将其移至已显示的事件,现在它可以正常工作......