Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的Windows GUI主循环。。。它在哪里?_C#_.net - Fatal编程技术网

C#中的Windows GUI主循环。。。它在哪里?

C#中的Windows GUI主循环。。。它在哪里?,c#,.net,C#,.net,我在C#中有一个Windows窗体应用程序,我正试图找出在哪里实现与main()中的主while循环等效的CLI应用程序。我正在使用Visual C的gui设计器 编辑:使用计时器实例解决问题。它在方法内部。您不应该直接调用GetMessageAPI函数: // MyForm is derived from `System.Windows.Forms.Form` class Application.Run(new MyForm()); 它是从应用程序中输入的。运行(表单)。在该循环中不输入任

我在C#中有一个Windows窗体应用程序,我正试图找出在哪里实现与main()中的主while循环等效的CLI应用程序。我正在使用Visual C的gui设计器

编辑:使用计时器实例解决问题。

它在方法内部。您不应该直接调用
GetMessage
API函数:

// MyForm is derived from `System.Windows.Forms.Form` class
Application.Run(new MyForm()); 

它是从
应用程序中输入的。运行(表单)
。在该循环中不输入任何逻辑。如果需要响应输入,请将事件处理程序添加到窗体控件的特定事件中。如果需要定期运行逻辑,请使用其中一个类


< C++中消息泵逻辑的主要结果是笔记本上电池的过度使用。您肯定应该开始重新思考实现目标的实际代码需求,它们不应该包括旋转循环中不断运行的逻辑。

尝试阅读。语言不太清晰,代码是VB,但它应该能让人明白这一点。

好的,这对我有点帮助,但现在我需要知道如何将程序逻辑添加到该循环中。这就是我想弄明白的,你不知道。你将程序的逻辑添加到事件处理程序中。sheepsimulator:你是什么意思?运行建立一个消息循环。在内部,它在一个循环中调用
GetMessage
Win32 API函数。但是如何将程序逻辑添加到其中呢。例如,如果我想让程序连续地将“It works!”打印到一个小部件(添加我计算出的文本,widget.text+=“It works!”)。您可以使用一个计时器,并在每次计时器触发时添加一些文本。
表单
类和您添加到其中的控件将引发事件。你处理这些事件并相应地做一些事情。您可以在
MyForm.designer.cs
文件中查看Visual C#form designer生成的代码。好的,有没有以这种方式使用它的示例?或者我可以从这里找到答案。谢谢你的帮助。我怀疑你想得不对。您可能会问“在我的C#程序中,某个多边形的数据在哪里通过某条总线移动到GPU”。这些想法不是C语言中的概念,而是库、语言和运行时为您抽象的实现细节。C#中windows窗体的全部意义在于确保您不再需要考虑消息循环。是的,事件驱动程序是基于windows消息构建的;有时抽象会泄漏,但在大多数正常情况下,您不需要在消息级别直接交谈。@Orm:您链接的示例代码编写得非常糟糕。如果你用它,我建议你用它作为参考,以避免什么。我是,是的,这是一个垃圾的方式做它。我试过了,但效果并不好。如果你知道你想要完成什么,你可能会寻找或问另一个问题,因为你知道这不是你最初的想法。没有这些细节,很难说得比Eric说的更多(他的任何回复都是如此)。