C# 使用静态方法更新RichTextBox
我正在尝试从多个C# 使用静态方法更新RichTextBox,c#,winforms,C#,Winforms,我正在尝试从多个静态方法更新RichTextBox控件。每次都要添加大量文本,并且间隔时间非常短。这是一种客户机-服务器类型的应用程序,dll正在使用静态处理程序。我正在使用下面的代码,没有任何文本从静态方法添加到RichTextBox中。我该如何解决这个问题 public partial class MyMainForm : Form { private static MyMainForm FrmReference; private stati
静态方法更新RichTextBox
控件。每次都要添加大量文本,并且间隔时间非常短。这是一种客户机-服务器类型的应用程序,dll正在使用静态处理程序。我正在使用下面的代码,没有任何文本从静态方法添加到RichTextBox中。我该如何解决这个问题
public partial class MyMainForm : Form
{
private static MyMainForm FrmReference;
private static void Handler1(object parameter, ConnectionEvent CE)
{
FrmReference.MyRichTextBox.AppendText(DateTime.Now + "....x....");
}
private static void Handler2(object parameter, DataEvent DE)
{
FrmReference.MyRichTextBox.AppendText(DateTime.Now + "....y....");
}
public MyMainForm()
{
InitializeComponent();
FrmReference = this;
}
private void VNToolStripButtonStart_Click(object sender, EventArgs e)
{
con = new Connection("127.0.0.1", ConParams);
con.SetConnectionHandler(Handler1, null);
con.SetDataHandler(Handler2, null);
MyRichTextBox.AppendText(DateTime.Now + "....abc....");
}
}
没有调用您的处理程序
如果您尝试类似的方法,您会发现问题不是应该写入RichTextBox
的静态方法:
public partial class Form1 : Form
{
private static Form1 frmReference;
private static void WriteToMyRichTextBox(string what)
{
frmReference.richTextBox1.AppendText(what);
frmReference.richTextBox1.AppendText(Environment.NewLine);
}
public Form1()
{
InitializeComponent();
frmReference = this;
}
private void button1_Click(object sender, EventArgs e)
{
WriteToMyRichTextBox(DateTime.Now.ToString());
}
}
是否验证调用了处理程序?从何处调用Handler1和Handler2?它没有显示在你的代码中你的方法的静态选择背后的原因是什么?好的,实际上我忘了添加这一部分,同时保持问题简短!但是,是的,dll在后台调用它们,并执行它们打算执行的操作。它们在这里的定义如下:con=新连接(“127.0.0.1”,ConParams);con.SetConnectionHandler(Handler1,null);con.SetDataHandler(Handler2,null);正在调用处理程序,请参阅更新的问题。问题似乎在于异步调用的速度(几乎小于1秒)或RichTextBox控件对所有这些操作的可访问性。@Varun尝试放置一个Console.WriteLine($“{DateTime.Now.ToString()}:调用的处理程序”)代码>在处理程序中,并显示结果谢谢您的帮助!问题出在处理程序本身的一部分代码中。Console.Writeline有助于轻松调试。我还实现了这个方法WriteToMyRichTextBox(string what),并确保所有追加文本操作都是通过这个方法执行的。现在一切正常。谢谢