【发布时间】:2014-11-01 18:04:31
【问题描述】:
我想将文本写入文本框。为了能够从不同的线程执行此操作,我调用了一个静态方法,该方法调用了一个包含调用和文本框写入的非静态方法。这样做的时候。我收到错误消息,在设置 Windows 句柄之前它无法调用,所以我正在设置它。我的问题是,
的位置if (!this.IsHandleCreated)
this.CreateHandle();
下面的代码是唯一的,我的程序没有崩溃,但现在它只循环(不确定地)BeginInvoke 代码,但实际上不是下面的文本设置代码。我做错了什么?
代码:
private void ActualLog(string input)
{
var currentForm = form as Main;
if (!this.IsHandleCreated)
this.CreateHandle();
if (currentForm.txtServerLog.InvokeRequired)
{
this.BeginInvoke(new Action<string>(ActualLog), new object[] { input });
return;
}
else
{
currentForm.txtServerLog.Text += input + "\r\n";
currentForm.txtServerLog.Refresh();
}
}
public static void Log(string input)
{
Main main = new Main();
main.ActualLog(input);
}
在我的帖子中,我会打电话给Log("Any String");
【问题讨论】:
标签: c# multithreading winforms invoke