程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實時申請技術(3)

C#實時申請技術(3)

編輯:關於C語言

以下代碼 操縱XML文件,並且為客戶端生成XML文件。

public void LoadXMLThread()
{
MethodInvoker miv = new MethodInvoker(this.UpdateListVIEw);
string tmp = null;
string XMLString = null;
int recordFlg = -1;
int textCount =0;
XMLString = "\v"+"";
XmlTextReader tr = new XmlTextReader("issue.XML");
while(tr.Read())
{
switch (tr.NodeType)
{
case XMLNodeType.Element:
if (tr.Name == "Issue")
{
recordFlg++;
if(recordFlg > 0)
{
textCount=0;
xmlString += CreateXMLElement(
tr.Name, 2);
XMLString += "\n";
SendDataToAllClIEnt(XMLString);
XMLString = "\v"+"
version='1.0'?>";
this.BeginInvoke(miv);
JobDone.WaitOne();
}
}
if (recordFlg >= 0)
{
xmlString += CreateXMLElement(
tr.Name, 1);
tmp = tr.Name;
}
break;
case XMLNodeType.Text:
switch(++textCount)
{
case 1:
isu.symbol=tr.Value;
break;
case 2:
isu.bid=tr.Value;
break;
case 3:
isu.offer=tr.Value;
break;
case 4:
isu.volume=tr.Value;
break;
}
XMLString += tr.Value;
xmlString += CreateXMLElement(tmp, 2);
break;
}
}
fThd.Abort();
}
string CreateXMLElement(string elem, int ord)
{
string tmp = null;
if (ord == 1)
tmp = String.Format("<{0}>", elem);
else
tmp = String.Format("", elem);
return tmp;
}
以下功能演示的是如何設置TcpClient中ListvIEw控件的 BackColor和 Forecolor屬性 。
private void UpdateListVIEw()
{
int ind=-1;
for (int i=0; i < this.listVIEw1.Items.Count;i++)
{
if (this.listVIEw1.Items[i].Text == isu.symbol.ToString())
{
ind=i;
break;
}
}
if (ind == -1)
{
ListViewItem newItem new ListVIEwItem(isu.symbol.ToString());
newItem.SubItems.Add(isu.bid);
newItem.SubItems.Add(isu.offer);
newItem.SubItems.Add(isu.volume);
this.listVIEw1.Items.Add(newItem);
int i=this.listVIEw1.Items.IndexOf(newItem);
setRowColor(i, System.Drawing.Color.FromArgb(255, 255, 175));
setColColorHL(i, 0, System.Drawing.Color.FromArgb(128,0,0));
setColColorHL(i, 1, System.Drawing.Color.FromArgb(128,0,0));
this.listVIEw1.Update();
Thread.Sleep(300);
setColColor(i, 0, System.Drawing.Color.FromArgb(255, 255,175));
setColColor(i, 1, System.Drawing.Color.FromArgb(255, 255, 175));
}
else
{
this.listVIEw1.Items[ind].Text = isu.symbol.ToString();
this.listVIEw1.Items[ind].SubItems[1].Text = (isu.bid);
this.listVIEw1.Items[ind].SubItems[2].Text = (isu.offer);
this.listVIEw1.Items[ind].SubItems[3].Text = (isu.volume);
setColColorHL(ind, 0, System.Drawing.Color.FromArgb(128,0,0));
setColColorHL(ind, 1, System.Drawing.Color.FromArgb(128,0,0));
this.listVIEw1.Update();
Thread.Sleep(300);
setColColor(ind, 0, System.Drawing.Color.FromArgb(255,255,175));
setColColor(ind, 1, System.Drawing.Color.FromArgb(255,255,175));
}
JobDone.Set();
}
private void setRowColor(int rowNum, Color colr )
{
for (int i=0; i < this.listVIEw1.Items[rowNum].SubItems.Count;i++)
if (rowNum%2 !=0)
this.listVIEw1.Items[rowNum].SubItems[i].BackColor = colr;
}
private void setColColor(int rowNum, int colNum, Color colr )
{
if (rowNum%2 !=0)
this.listVIEw1.Items[rowNum].SubItems[colNum].BackColor=colr;
else
this.listVIEw1.Items[rowNum].SubItems[colNum].BackColor =
System.Drawing.Color.FromArgb(248, 248,248);
if (colNum==0)
{
this.listVIEw1.Items[rowNum].SubItems[colNum].ForeColor =
System.Drawing.Color.FromArgb(128, 0, 64);
this.listVIEw1.Items[rowNum].SubItems[colNum].BackColor =
System.Drawing.Color.FromArgb(197, 197, 182);
}
else
this.listVIEw1.Items[rowNum].SubItems[colNum].ForeColor =
System.Drawing.Color.FromArgb(20, 20,20);
}
private void setColColorHL(int rowNum, int colNum, Color colr )
{
this.listVIEw1.Items[rowNum].SubItems[colNum].BackColor = colr;
this.listVIEw1.Items[rowNum].SubItems[colNum].ForeColor =
System.Drawing.Color.FromArgb(255,255,255);
}

運行該例子的步驟

1. 在A機上運行TcpServer.exe文件。

2. 在A機或B機上運行一次或多次TcpClIEnt.exe文件。

3. 在TcpClIEnt端,點擊菜單連接,進入TcpServer正在運行中的服務器端。在編輯欄鍵入用戶名及口令,點擊確認。

4. 當在TcpServer頂部的istview上瞧見客戶端的提示時,則在TcpServer,上點擊Load Data菜單,然後實時數據則會出現在TcpServer 和TcpClIEn上。

注意:請確認Data file, Issue.txt and Issue.XML等文件總是處於同一根目錄下,正如TcpSvr.exe 和 MaskedTextBox.dll, WTcpClIEnt.exe.是處於同一目錄下一樣。

Update at 10/20/2001.

當添加/刪除項目時,請鎖住Hash表,這樣可以確保線程的安全。

添加功能,以便生成和處理XML格式文件。

在發送訊息至客戶端時,請在服務器端添加發送訊息起始和結尾的字符。

上述方法可以增加客戶端的穩定性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved