问题描述
- C#中线程里调用winform上的控件,问题。求助。
-
废话不多说,我直接贴代码了。程序很简单。我摘抄的网上的。
上图是个界面。然后程序里先是一个类。如下:
class ClientThread
{
Encoding encoding = Encoding.GetEncoding("GB2312");
private Socket client;
public string data = null;
private byte[] receiveBytes = new byte[1024];
private int recCount;public ClientThread(Socket ClientSocket) { this.client = ClientSocket; } public void ClientServer() { string ip; try { while (true) { recCount = client.Receive(receiveBytes, receiveBytes.Length, 0); ip = client.RemoteEndPoint.ToString(); byte[] clientIP = Encoding.Default.GetBytes(ip); if (recCount != 0) { data = encoding.GetString(receiveBytes, 0, recCount); client.Send(encoding.GetBytes("OK"), 2, 0); } else { break; } } } catch (Exception ex) { MessageBox.Show("出现异常:" + ex.ToString()); } }
}
接下来就是开个线程了。 private void button1_Click(object sender, EventArgs e)
{
newsocket.Bind(ipep);
newsocket.Listen(10);while (true) { Socket client = newsocket.Accept(); newclient = new ClientThread(client); Thread newthread = new Thread(new ThreadStart(newclient.ClientServer)); newthread.Start(); }
}
现在我想 在界面里的textbox1.text 中显示线程中接收的数据。但是我现在调了好久没弄出来,我不知道哪里有问题。我是个新手,希望大神指点一二,谢谢了。
解决方案
c#中线程访问winform控件的若干问题
c#中线程访问winform控件的若干问题
在winform里怎么调用WebBrowser控件里的脚本
解决方案二:
data = encoding.GetString(receiveBytes, 0, recCount);
this.Invoke(new Action(() => { textBox1.Text = data; }));
时间: 2024-07-30 12:47:37