QQClient:
Dim dr As DataRow = DataTables("QQ信息").AddNew
dr("发送者") = iif(e.UserName > "",e.UserName,"服务器")
dr("时间") = Date.Now()
dr("信息") = e.Message
'-----------------------即时高效同步数据-----------------------
Dim mssg As String = e.Message
If mssg.StartsWith("U#") Then '表示修改了某行
Dim pts() As String = mssg.Split("#")
If pts.Length = 3 Then
Dim ddr As DataRow = DataTables(pts(1)).Find("[_Identify] = " & pts(2))
If ddr IsNot Nothing Then
ddr.Load() '重新加载此行
End If
End If
ElseIf mssg.StartsWith("A#") Then '表示增加了行
Dim pts() As String = mssg.Split("#")
If pts.Length = 3 Then
DataTables(pts(1)).AppendLoad("[_Identify] = " & pts(2)) '追载新增加的行.
End If
ElseIf mssg.StartsWith("D#") Then '表示删除了行
Dim pts() As String = mssg.Split("#")
If pts.Length = 3 Then
DataTables(pts(1)).RemoveFor("[_Identify] = " & pts(2)) '移除行
End If
End If
QQSERVER:
If e.Message = "GetDate" Then '客户端需要获取QQ服务器信息
e.ReturnValue = Date.Now
End If
'--------------------保存聊天信息---------------------
Dim dr As DataRow = DataTables("QQ信息").AddNew
dr("发送者") = iif(e.UserName > "",e.UserName,"服务器")
dr("时间") = Date.Now()
dr("信息") = e.Message
dr.save
''-------------------独占式编辑------------------------
Dim msg As String = e.Message
If msg.StartsWith("%i") AndAlso msg.EndsWith("i%") Then '收到申请信号
msg = msg.SubString(2, msg.Length - 4)
Dim id As Integer
If Integer.TryParse(msg,id) Then
If pdids.ContainsKey(id) Then '如果有人正在处理此行
e.ReturnValue = pdids(id) '通知申请人是谁在处理此行
Else
e.ReturnValue = "OK" '通知申请人可以处理此行
pdids.Add(id, e.UserName) '登记此行的处理者为申请者
End If
End If
ElseIf msg.StartsWith("@i") AndAlso msg.EndsWith("i@") Then '收到处理完成信号
msg = msg.SubString(2, msg.Length - 4)
Dim id As Integer
If Integer.TryParse(msg,id) Then
If pdids.ContainsKey(id) Then
pdids.Remove(id) '从字典中移除此行的编辑登记
End If
End If
End If
[此贴子已经被作者于2018/3/28 13:17:56编辑过]