我正在使用计时器定期读入日志文件并将某些内容发布到Windows表单应用程序中的文本框中。我在C#中进行开发。我通过向set_textbox_thread发送一个字符串来执行此操作,该字符串将文本发布到下面其他位置的相应文本框(tbc)中。下面的代码适用于我构建的练习应用程序。但是,相同的代码运行,但无法在我正在构建的完整应用程序中更新我的文本框。它似乎在Invoke语句上失败,该语句无法再次调用set_textbox_thread。我的理论是,因为我的完整应用程序有一组更复杂的控件,我不会通过正确的控件调用Invoke。我试过通过"这个"父面板,父窗体和触发set_textbox_thread的按钮,并处理相同的结果。两个问题:
提前致谢!
private delegate void stringDelegate(string s);
private void set_textbox_thread(string s)
{
TextBox tbc = get_thread_tb();
if (tbc.InvokeRequired)
{
MessageBox.Show("Invoke Required");
stringDelegate sd = new stringDelegate(set_textbox_thread);
**this.Invoke(sd, new object[] {s });**
MessageBox.Show("Invoke Completed");
}
else
{
答案 0 :(得分:0)
1)你调用什么控件并不重要;只有一个UI线程和任何控件可以将回调编组回该UI线程。
2)你可以用这个帖子做什么?
3)那里没有太多细节。你怎么知道你有错误信息?你是什么意思“错误信息”
答案 1 :(得分:0)
调用文本框上的调用:
tbc.Invoke(sd, new object[] {s });