Application.Run(Form)vs.Form.Show()?假设在主GUI线程上发生了很多事情(数据传入、用户操作等)。假设我们要创建一个表单并显示它。如果我们使用Application.Run(Form)而不是Form.Show()是否有任何性能提升?有没有更好的办法?请解释原因或原因。除非您知道它的作用,否则不要使用Application.Run()。而且,一旦您了解了它的作用,您就会知道为什么除了在程序开头之外不应该使用它。Application.Run启动消息泵。这是任何GUI程序的核心,它使窗口能够接收消息,以便它们可以触发事件和执行操作。你不能有两个消息泵,因为那没有任何意义。(是的,我知道你可以有两个消息泵,但你为什么想要?有一个泵很难!)至于你真正的问题(我怎么不在我的GUI线程上做事),它有点复杂。最简单的答案是“使用线程”。由于我不知道你的具体情况,我只能提供一些一般性的建议:不要试图从其他线程操纵控件。充其量,它不会起作用。在最坏的情况下,它可能会让您的房子着火(好吧,也许没那么严重。但是,不要这样做。)。相反,您需要Invoke方法。下面将提供一个例子。不要在GUI线程上运行长时间运行的进程。简短的事情很好,但是任何可能需要超过半秒的事情最好卸载到另一个线程。使用事件从工作线程回发到GUI线程。下面是一个如何运行工作线程的示例:delegatevoidVoidDelegate();列出结果;布尔取消工作=假;voidDoWork(){int计算;结果=新列表();for(inti=int.MinValue;i显然,这是一个人为的例子,但它符合我的目的。这个假设的表单包含两个按钮,button1(“运行”)和button2(“取消”),以及一个文本框textbox1。button2应该开始禁用(Enabled=false)。当工作线程正在运行时,用户可以与任何其他控件交互,包括“取消”按钮(在我的示例中为button2)。完成后,它调用WorkFinished函数,该函数显示结果(并清除状态)。如果您指的不是应用程序的主要形式,那么答案是否定的。Application.Run()初始化主消息循环,应在应用程序启动时调用一次。在应用程序生命周期中显示的所有其他表单都应该是Form.Show或等效的。您可以从另一个线程调用Application.Run,??但无论如何您都需要两个UI线程进行同步。您不能在不确保自己不进入竞争状态的情况下就随便传递东西。以上就是C#学习教程:Application.Run(Form)vs.Form.Show()?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
