【发布时间】:2015-03-03 13:11:38
【问题描述】:
仅出于学术目的,我将以前的代码从 windows 窗体改编为 WPF,问题是我无法理解调用是如何工作的,希望有人可以在我阅读一些教程并解释时给我一些启发我能做些什么来调整这段代码。
每当有人在 send_click 上发送一条消息时,它都会发送到一个服务器,该服务器将所有连接的套接字分派到该服务器。我的问题是,如何调整此代码以使文本块“可更新”?它说它已经被另一个线程(主线程)使用。 这是我的应用程序包含的代码。提前致谢!
更新 #1:这是我第一次尝试使用调度程序调用 http://gyazo.com/42008aacbec2f8494bb7c6c33889d9ad,但我不明白这个 walloftext 背后的原因。
public Lobby()
{
InitializeComponent();
ctThread = new Thread(getMessage);
ctThread.Start();
clientSocket.Connect("127.0.0.1", 8888);
serverStream = clientSocket.GetStream();
}
TcpClient clientSocket = new System.Net.Sockets.TcpClient();
NetworkStream serverStream = default(NetworkStream);
string readData = null;
Thread ctThread;
private void btnSend_Click(object sender, RoutedEventArgs e)
{
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(txtInput.Text);
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
}
private void getMessage()
{
while (true)
{
serverStream = clientSocket.GetStream();
int buffSize = 0;
byte[] inStream = new byte[10025];
buffSize = clientSocket.ReceiveBufferSize;
serverStream.Read(inStream, 0, buffSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
readData = "" + returndata;
Dispatcher.BeginInvoke(new Action(() =>
{
txtContent.Text = txtContent.Text + Environment.NewLine + " >> " + readData;
}));
}
}
【问题讨论】:
标签: c# wpf multithreading client server