Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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# 在C语言中,以一定的时间间隔将文本附加到富文本框中#_C#_Text_Time_Richtextbox_Wait - Fatal编程技术网

C# 在C语言中,以一定的时间间隔将文本附加到富文本框中#

C# 在C语言中,以一定的时间间隔将文本附加到富文本框中#,c#,text,time,richtextbox,wait,C#,Text,Time,Richtextbox,Wait,我正试图给一个算法写一些日志。也就是说,在模拟运行时,我想在日志中添加一个文本,说明模拟中正在发生的事情(比如说,在前一次添加的2秒时间) 我试过使用 Thread.Sleep(2000) 但这只会使整个文本在模拟结束时在循环数×2秒后出现在日志中 我还可以尝试什么?使用计时器控件进行演练。将更新代码放入勾选方法。使用计时器控件进行演练。将您的更新代码放入勾选方法。这应该可以做到: public void updateMessage() { DateTime start = DateTi

我正试图给一个算法写一些日志。也就是说,在模拟运行时,我想在日志中添加一个文本,说明模拟中正在发生的事情(比如说,在前一次添加的2秒时间)

我试过使用

Thread.Sleep(2000)

但这只会使整个文本在模拟结束时在循环数×2秒后出现在日志中

我还可以尝试什么?

使用计时器控件进行演练。将更新代码放入
勾选
方法。

使用计时器控件进行演练。将您的更新代码放入
勾选
方法。

这应该可以做到:

public void updateMessage()
{
    DateTime start = DateTime.Now;

    while (DateTime.Now.Subtract(start).Seconds < 15)
    {
        //do your update here
        textbox.text+="STATUS";
    }
}
Thread threadUpdating=new Thread(new ThreadStart(updateMessage));;
threadUpdating.Start();
public void updateMessage()
{
DateTime start=DateTime.Now;
while(DateTime.Now.Subtract(start).Seconds<15)
{
//请在这里更新
textbox.text+=“状态”;
}
}
线程更新=新线程(新线程开始(更新消息));;
threadupdateing.Start();
这应该可以做到:

public void updateMessage()
{
    DateTime start = DateTime.Now;

    while (DateTime.Now.Subtract(start).Seconds < 15)
    {
        //do your update here
        textbox.text+="STATUS";
    }
}
Thread threadUpdating=new Thread(new ThreadStart(updateMessage));;
threadUpdating.Start();
public void updateMessage()
{
DateTime start=DateTime.Now;
while(DateTime.Now.Subtract(start).Seconds<15)
{
//请在这里更新
textbox.text+=“状态”;
}
}
线程更新=新线程(新线程开始(更新消息));;
threadupdateing.Start();

没有
Sleep
锁定线程,而
Application.DoEvents
从来都不是一个好主意。这是错误的答案。@Cody Gray-编辑,为什么Application.DoEvents是个坏主意?因为几乎总是有更简单更好的解决方案;在这种情况下,需要一个计时器。唯一可以安全地调用
应用程序的人。在他们的代码中,DoEvents
是那些完全理解它的功能的人(我不是说“让应用程序更具响应性”,我是说它会推送Windows消息队列以及所有可能的副作用)。这些人往往会改变他们的设计,或者找到另一种更好的方法。在这里,它经常被推荐为一种快速、简单的解决方案,但事实并非如此。我70%的反对票是对建议它的答案的。事实是,线程是很难的,把
DoEvents
伪装成这些问题的简单解决方案充其量是不真实的,并导致以后难以调试重入性bug。当用户点击了一些他们不应该点击的东西而干扰了您的操作时会发生什么?有太多的事情你必须考虑,这是一个安全的建议,但它经常被推荐给那些不知道这些东西的人。这可能是出于调试目的而进行的黑客攻击,但这就是它的全部价值。更多的信息是。@Blue Gene,我认为科迪一点也不苛刻——这是一个建设性的建议,如果你接受它,对你会有好处。不
Sleep
锁定线程,而
Application.DoEvents
从来都不是一个好主意。这是错误的答案。@Cody Gray-编辑,为什么Application.DoEvents是个坏主意?因为几乎总是有更简单更好的解决方案;在这种情况下,需要一个计时器。唯一可以安全地调用
应用程序的人。在他们的代码中,DoEvents
是那些完全理解它的功能的人(我不是说“让应用程序更具响应性”,我是说它会推送Windows消息队列以及所有可能的副作用)。这些人往往会改变他们的设计,或者找到另一种更好的方法。在这里,它经常被推荐为一种快速、简单的解决方案,但事实并非如此。我70%的反对票是对建议它的答案的。事实是,线程是很难的,把
DoEvents
伪装成这些问题的简单解决方案充其量是不真实的,并导致以后难以调试重入性bug。当用户点击了一些他们不应该点击的东西而干扰了您的操作时会发生什么?有太多的事情你必须考虑,这是一个安全的建议,但它经常被推荐给那些不知道这些东西的人。这可能是出于调试目的而进行的黑客攻击,但这就是它的全部价值。更多的信息是。@Blue Gene,我认为科迪一点也不苛刻——这是一个建设性的建议,如果你接受它,对你会有好处。正确。WinForms应用程序将要使用该类。您可以在设计时将其中一个计时器添加到表单中(请参阅工具箱中的“组件”部分),或者使用代码对其进行实例化。将计时器的
Interval
属性设置为更新之间要等待的毫秒数。正确。WinForms应用程序将要使用该类。您可以在设计时将其中一个计时器添加到表单中(请参阅工具箱中的“组件”部分),或者使用代码对其进行实例化。将计时器的
Interval
属性设置为更新之间要等待的毫秒数。每2秒不是任意的吗?记录每一次实际发生的事情不是更好吗?事情发生得很快,这是一个简单的模拟:)不是每2秒一次吗?记录每次实际发生的事情不是更好吗?事情发生得很快,这是一个简单的模拟:)