0

可能重复:
从不同线程更新 UI
调用线程无法访问此对象,因为不同线程拥有它

祝大家有美好的一天。我的聊天应用程序有问题,我需要一直刷新我的聊天,但错误提示。我不知道如何解决这个问题。我希望有一个人可以帮助我。这是我的代码:

void timerChatRefresh_Tick(object sender, EventArgs e)
    {

        thread = new Thread(new ThreadStart(ChatRefresh));
        thread.Start();
    }

    private void ChatRefresh()
    {
        conn = new MySqlConnection("Server=...; Database=...; Uid=...; Password=...;");
        ds.Clear();
        da.SelectCommand = conn.CreateCommand();
        da.SelectCommand.CommandText = "select * from chatmessagetbl";
        da.SelectCommand.CommandType = CommandType.Text;
        da.Fill(ds, "chatmessagetbl");
        foreach (DataRow item in ds.Tables["chatmessagetbl"].Rows)
        {
            textBlockChatArea.Text += item["username"].ToString() + ": " + item["message"].ToString() + "\n";
        }
    }
4

1 回答 1

1

尝试 textBlockChatArea.Invoke("委托一个更新 Text 属性的方法")

1. 声明一个代表   
    公共委托无效 UpdateChatAreaCallback(字符串文本);
2. 创建一个将更新文本框的方法:
    公共无效UpdateChatArea(字符串文本){textBlockChatArea.Text += text;}
3.调用方法:
    textBlockChatArea.Invoke(new UpdateChatAreaCallback(UpdateChatArea, "new text"));
于 2012-06-11T03:18:37.943 回答