C#在运行时更新日志文本框

时间:2014-10-01 01:50:18

标签: c# loops freeze

过去几天我一直在研究MMO的机器人。它运行在一个大循环中,内部还有1-2个其他较小的循环。到目前为止它很棒。当它运行时,它被设置为使用当前正在执行的操作更新richtextbox,这样我以后就可以轻松地进行故障排除。

我的问题是它的活动和循环它不会自动更新文本框,直到它完成它正在做的一切。当它设置在无限循环中时哪个很难。我希望能够在另一台显示器上使用主程序窗口运行机器人,随着时间的推移给我更新。

整个程序似乎冻结了,我在运行时根本无法与它进行交互。当我希望它停止时,这也会导致问题。我在一分钟内停止它的唯一方法是在visual studio中单击“停止”。

我试过四处寻找,但我不知道该搜索什么。我希望我解释得很好。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这将是一个很好的阅读:
http://www.beingdeveloper.com/use-dispatcher-in-wpf-to-build-responsive-applications/

摘要

您可以发送委托人fx,它负责格式化程序或写入程序。在您的实现中,它将是AppendText的那个。并确保Richtextbox.AppendText在Dispatcher.Invoke()

代码示例

class BotRand
 {
   //Write Event is delegate
   public execute(WriteEvent writeFx)
    {
     //Crawl
     writeFx("message");
    }
 } 

 class MainWindow : Window
 {
      void WriteFunc(object message, EventArgs outline) 
       {
            Dispatcher.Invoke(new Action(() => richText.AppendText(message));
       }
 }

这可以帮助您更有效地开始搜索。 谢谢,