Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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# 使用infinate循环创建自动更新程序_C#_Loops_Infinite Loop - Fatal编程技术网

C# 使用infinate循环创建自动更新程序

C# 使用infinate循环创建自动更新程序,c#,loops,infinite-loop,C#,Loops,Infinite Loop,已解决: 你们是最棒的! 我将goyouidiot\u Click的所有内容制作成一个名为displayResult的方法,然后: private void t1_TextChanged(object sender, EventArgs e) { displayResult(); } 我以前怎么没想到呢?哈哈,谢谢 这是原始的梅塞奇: 就在不久前,我开发了一个小软件 这算得平均值是15 数字。代码开始运行时 Button被点击了,但我想 把这段代码

已解决: 你们是最棒的! 我将
goyouidiot\u Click
的所有内容制作成一个名为
displayResult
的方法,然后:

 private void t1_TextChanged(object sender, EventArgs e)
       {
        displayResult();
       }
我以前怎么没想到呢?哈哈,谢谢

这是原始的梅塞奇:

就在不久前,我开发了一个小软件 这算得平均值是15 数字。代码开始运行时 Button被点击了,但我想 把这段代码放在一个内循环中 开始使用程序运行,因此 答案将自动更新。这是 我的代码:

private void goyouidiot_Click(object sender,
事件参数(e) { . . . . }

还有那些不明白的人:

我有15个文本框,我想要 当文本框 内容改变


将其放入无限循环可能会耗尽系统的CPU能力,这意味着您需要引入暂停(
Thread.Sleep

如果使用暂停,也可以使用
计时器
对象-有基于窗体的
计时器
或基于线程的
计时器
System.Windows.Forms
,或
System.Threading
/
System.Timers

我个人建议使用计时器以所需的间隔滴答作响


线程计时器使用委托/线程池,而基于表单的计时器将消息放在消息泵上-由于创建勾号的方式的开销,这两种计时器不能保证精确到它们的间隔。

而不是无限循环(这将导致应用程序挂起,除非它位于后台线程上——一个更大的蠕虫罐)您应该只响应更改事件

如果您的号码正在文本框中更新,只需将每个号码的文本更改事件绑定到您的
goyouidiot\u单击
方法,然后您应该重命名该方法

编辑 正如Eric在回答中指出的那样,这些事件之所以有效,是因为事实上在后台有一个无限循环来侦听更改—Windows消息泵。当您在应用程序上调用
Run
方法时,这个循环就会启动。

如果我理解正确的话(您希望在Winform应用程序中每隔15分钟更新一次),那么最好使用该类,它将定期运行您的代码


编辑:如果要在其中一个文本框中的文本发生更改时执行某些计算,则应在这些文本框的事件的事件处理程序中执行该操作(要为每个文本框指定相同的处理程序)

您的直觉认为必须涉及无限循环是正确的。但您不想自己编写该循环;运行库已经为您编写了该循环。您想了解的是事件驱动编程。找到一个好的介绍,如:


事件驱动编程在幕后的工作方式是,有一个无限循环的代码,用于监视来自操作系统的消息队列的状态。这些消息表示鼠标单击和键入之类的内容。无限循环代码然后将这些消息转换为事件触发。您可以收听这些消息当特定事件发生时,nt会触发并运行代码。

你需要再解释一下你在追求什么,然后问一个问题。
*去吧*你*白痴*\u Click()
:好名字!这个方法的名字在Hunter S.Thompson voiceLol thx=D中向我尖叫我想做什么…nvm,我来编辑主要文章。你的方法
t1\u TextChanged()
向我建议您可以通过
t15\u TextChanged()进行
t2\u TextChanged()
15个文本框中的每一个都有一个。如果这是真的,你可以删除其中一个,并将所有文本框绑定到同一个方法。你可以将发件人作为一个参数,但在你的情况下,你甚至不需要它,因为你想对所有15个条目的内容求和,而不管哪一个发生了更改。不。我有15个文本框,我想要meth当文本框的内容发生变化时运行od。+1因为在这种情况下使用事件比使用定期计时器要好得多,根本不需要实际循环这种进程。只需使用事件。如果你想将某个内容从另一个源推送到UI,只需使用另一个线程。我做到了,成功~!但我感觉我正在做som这是错误的,因为现在我有15个文本更改句子……我相信有更好的方法,可能包括组或其他内容。@Gilad:在处理用户键入的文本框时,您需要抑制所有其他文本框的事件。您可以更改要绑定的事件(即,以用户输入文本框为目标,而不是文本框中的更改),或者您可以在事件内部抑制事件。您可以通过完全删除事件来实现这一点,也可以更实际地通过在事件开始之前选中一个指示事件是否正在发生的变量来实现这一点。