C#Winform如何实现日志信息实时显示到窗体的textbx中去?

Lucky8oy520 2018-05-04 09:10:27


窗体代码:
public partial class MainFrame : Form
{
private static XmlDocument xmlDoc = new XmlDocument();

public MainFrame()
{
InitializeComponent();
}
GetTime dt = new GetTime();

public void start()
{
readLog("System Start Running......\n");
readLog("数据库连接成功......\n");
AutoProcessThread autopt = new AutoProcessThread();
Thread td = new Thread(autopt.run);
//运行一个cs文件中的方法
td.Start();
}
public void readLog(string log)
{
string time = dt.dateTime();
textBox1.AppendText(time + log + "\n");
}
}
}

class AutoProcessThread
{
public void run()
{
MainFrame mf= new MainFrame();
mf.readLog("进入autoProcess------run");
}
}


那么问题来了,为什么窗体中调用readLog方法就能显示在textBox中,而其它cs文件调用 mf.readLog("进入autoProcess------run") 没有显示在窗体的textBox上呢?
...全文
4117 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨微~ 2021-04-14
  • 打赏
  • 举报
回复
定义一个委托来作为日志在UI显示的转换不就可以实时显示,如果是在其他线程传输过来的
纯唇Yu弄 2021-03-19
  • 打赏
  • 举报
回复

public void readLog(string log)
        {
            string time = dt.dateTime();
            this.Invoke(new Action(() =>
            {
                textBox1.AppendText(time + log + "\n");
            }));
        }
threenewbee 2018-05-04
  • 打赏
  • 举报
回复
日志不多,就做一个定时器刷吧。 string s = File.ReadAllText(日志文件名); if (s != textBox1.Text) textBox1.Text = s;
巡拜千年 2018-05-04
  • 打赏
  • 举报
回复
因为你没有showDialog。 class AutoProcessThread { public void run() { MainFrame mf= new MainFrame(); mf.readLog("进入autoProcess------run"); mf.showDialog(); } }
Lucky8oy520 2018-05-04
  • 打赏
  • 举报
回复
有人给个解答吗

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧