【发布时间】:2009-05-28 16:34:30
【问题描述】:
我不知道为什么会这样,但是当我在 EventHandler 中创建一个新表单时,它会在方法完成后立即消失。
这是我的代码。为了清楚起见,我对其进行了编辑,但从逻辑上讲,它是完全相同的。
static void Main()
{
myEventHandler = new EventHandler(launchForm);
// Code that creates a thread which calls
// someThreadedFunction() when finished.
}
private void someThreadedFunction()
{
//Do stuff
//Launch eventhandler
EventHandler handler = myEventHandler;
if (handler != null)
{
handler(null, null);
myEventHandler = null;
}
}
private void launchForm(object sender, EventArgs e)
{
mf = new myForm();
mf.Show();
MessageBox.Show("Do you see the form?");
}
private myForm mf;
private EventHandler myEventHandler;
只要 MessageBox 显示“你看到表单了吗?”,新表单就会显示。有没有。只要我点击确定,表单就会消失。
我错过了什么?我认为通过将新表单分配给类变量,它会在方法完成后保持活动状态。显然,情况并非如此。
【问题讨论】:
-
澄清:someThreadedFunc 是在主 UI 线程以外的线程上调用的(所以 launchForm 也是)?
-
正确。对不起。我尽量不贴3页代码就说清楚了。
标签: c# winforms multithreading .net-2.0 event-handling