在C#中使用线程更改WinForms

c#

我正在尝试使用线程更改表单。最初我使用Hide()Show()从下一个隐藏前一个表单,问题是当我关闭应用程序时,后台总是有东西在运行。我的想法是:从Form1点击一个按钮进入Form2,它可以选择是返回Form1还是进入Form3,它又可以选择返回Form2还是Form1

这是来自 Form1 按钮的一段代码,如果单击它必须将我带到 Form2。关键是它不会关闭 Form1,实际上它始终保留在后台,当我单击按钮关闭 Form2(使用Close ())时,程序不会关闭并保留在 Form1 上,如果我关闭它,则程序将最终关闭

第二种形式叫做OptionGeneral

Thread StartThread = null;
    public void btnOptions_Click(object sender, EventArgs e)
    {
        StartThread = new Thread(SwitchForm);
        StartThread.Start();
        //Hide();
        OptionGeneral option = new OptionGeneral();
        option.Show();
    }

    public void SwitchForm()
    {
        StartThread.Abort();
    }

回答

这是一个新的应用程序还是您正在尝试重新设计的一个已经在单独的线程中运行表单的应用程序...

在 Windows 中的一般编程中,无论是 C++、WinForms 还是 WPF,您都可以执行以下操作。使您在 GUI 事件中进行的交互基于事件。所有表单对话框和 GUI 元素都位于主线程中,因此数据传递非常简单和快速。

当需要完成真正的工作时,将工作转换到线程池或任务库中,当工作完成时,将数据编组回主 ui 线程以执行显示逻辑。

在 WPF 中,调度程序是将数据推回 UI 的关键。自从我做网络表单以来已经有很长一段时间了。

如果您的申请不遵守这些规则,您将遭受复杂的惩罚。如果它是全新的,那么用我想到的策略重新启动你的开发。

如果您的应用程序是根据这些规则设计的并且您正在维护它,那么分析将所有功能移植到稳定架构需要什么样的工作,并与负责人讨论。


以上是在C#中使用线程更改WinForms的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>