显示来自另一个线程的表单,而不是在调试模式下显示表单。

时间:2015-04-28 09:09:24

标签: c# winforms

我的主要流程没有UI,我想要做的是循环浏览项目并根据项目显示表单。

以下是我所拥有的:

private void SomeMethod(UIObject uiObject, string id)
{
    var thread = new Thread(() => LoadForm(id, uiObject.ControlType));
    thread.Start();
} // breakpoint here

请注意,我还没有以任何方式编码以防止循环逃跑,因为我现在设置一个断点并尝试让它在调试中首先运行。

这是LoadForm:

private void LoadForm(string id, string controlType)
{
    var form = new AddControlForm();
    form.Show();
    form.ControlId = id;
    form.ControlType = controlType;
    Application.Run();
}

正如你所看到的那样看起来相当标准,现在我正在寻找的结果是在SomeMethod中开始的线程,并且因为我设置了一个断点,所以主线程应该停止,因为表单已经创建并显示在另一个线程,我希望它在屏幕上和响应。

这没有发生,形式无处可寻。我的方法出了什么问题?

2 个答案:

答案 0 :(得分:2)

您需要使用Application.Run(form)才能在当前线程上启动新的消息循环。

答案 1 :(得分:1)

当您在断点处中断时,通常所有线程都会暂停,因此可能根本不会调用Application.Run()

如果你在SomeMethod()

中放置一个等待循环,它可能会有效