代码片段
private void ClearListViewItem(ListView listView)
{
if (listView.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { ClearItem(listView); }));
}
else
{
ClearItem(listView);
}
}
private void ClearItem(ListView listView)
{
listView.Items.Clear();
}
完整使用
private byte[] SendAndRecive(string IP, int Port, byte[] SendBuf)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress myIP = IPAddress.Parse(IP);
int port = int.Parse(txbPort.Text.Trim());
IPEndPoint end = new IPEndPoint(myIP, Port);
socket.Connect(end);
socket.Send(SendBuf);
byte[] RecBuf = new byte[socket.ReceiveBufferSize];
int reciveLength = socket.Receive(RecBuf);
RecBuf = RecBuf.Take(reciveLength).ToArray();
socket.Close();
return RecBuf;
}
private void Form1_Load(object sender, EventArgs e)
{
Task task = new Task(() => StartShow());
task.Start();
}
private void StartShow()
{
while (true)
{
ShowData();
Thread.Sleep(1000);
}
}
private void ShowData()
{
int i = 0;
try
{
// 001B00000006010307D0004E
byte[] sendBuf = new byte[] { 0x00, 0x1B, 0x00, 0x00, 0x00, 0x06, 0x01, 0x03, 0x07, 0xD0, 0x00, 0x4E };
byte[] recBuf = SendAndRecive(txbIP.Text.Trim(), int.Parse(txbPort.Text.Trim()), sendBuf);
ClearListViewItem(lvResult);
string[] ShortName = new String[] { "Ua", "Ub", "Uc", "Ia", "Ib", "Ic" };
for ( i = 0; i < (int)recBuf[8]/4; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = (i + 1).ToString();
lvi.SubItems.Add("");
string Value = recBuf[i * 4 + 11].ToString("X2") + recBuf[i * 4 + 12].ToString("X2") + recBuf[i * 4 + 9].ToString("X2") + recBuf[i * 4 + 10].ToString("X2");
lvi.SubItems.Add((TFunction.StrToLong(Value) * 0.0001).ToString());
AddListViewItem(lvResult, lvi);
}
}
catch
{
}
}
private void ClearListViewItem(ListView listView)
{
if (listView.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { ClearItem(listView); }));
}
else
{
ClearItem(listView);
}
}
private void ClearItem(ListView listView)
{
listView.Items.Clear();
}
private void AddListViewItem(ListView listView,ListViewItem item)
{
if (listView.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { AddItem(listView,item); }));
}
else
{
AddItem(listView, item);
}
}
private void AddItem(ListView listView,ListViewItem item)
{
listView.Items.Add(item);
}