我有以下代碼應該通過TCP/IP發送一系列值,每個值以某種方式修改變量'x','y'和'z'。當我收到任何迴應時,我希望代碼顯示'x','y'和'z'的當前值,但它沒有。我試過添加睡眠(),定時器,甚至使用標籤而不是文本框,但沒有。有任何想法嗎?問候顯示不夠快的變量值
for (i = 0; i < cant; i++)
{
byte[] data = null;
aux = (Convert.ToInt32(v[i, 3] + 48, CultureInfo.InvariantCulture));
//update variables' values
x = x + Convert.ToInt32(v[i, 0]);
y = y + Convert.ToInt32(v[i, 1]);
z = z + Convert.ToInt32(v[i, 2]);
data = System.BitConverter.GetBytes(aux);
NetworkStream stream = client.GetStream();
// String to store the response ASCII representation.
String responseData = String.Empty;
// Send the message to the connected TcpServer.
stream.Write(data, 0, 1);
// Buffer to store the response bytes.
data = new Byte[256];
while (responseData.Length == 0)
{
// Read the first batch of the TcpServer response bytes.
Int32 bytes = stream.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
}
//DISPLAY CURRENT VALUES
textBoxX.Text = x.ToString();
textBoxY.Text = y.ToString();
textBoxZ.Text = z.ToString();
}
這對於Winforms或WPF的工作方式非常重要,在代碼停止運行並重新進入消息循環之前,控件不會重新繪製。假設Winforms,你可以添加textBoxX.Update()來強制繪製。實際上並不是很實際,如果你做得對,那麼它看起來就像人眼中的模糊。如果重要的是要看到所有的值然後使用ListBox來代替。 – 2012-03-14 16:24:20