我的程序经常几乎在同一时间触发多个事件,而这些事件调用的过程要访问同一个数组,如何避免两段过程同时修改数组导致错误覆盖掉之前的数据?我本来设想做一个标记,当一段过程访问数组前查看标记,如果标记表示没有别的过程访问数组,就先改写标记,再访问数组。但是也会出现这个过程查看标记没问题后,正要改写标记之前却被另一个过程来检查标记,导致两个过程都以为自己可以访问数组,还是会导致访问冲突。
解决方案 »
- 如何把焦点发送到其他窗口上?
- 一条较复杂的SQL语句
- 用vb可不可以在98、2000、xp、2003下将“另”一个应用程序隐藏起来
- list控件只能载入32735行,有什么外部控件比它更好,我要载入几十万行
- 为何ACTIVEREPORT 2.0 会出现自动化错误?
- 一个关于WINSOCK的问题!!来者有分!!
- Do While Not mrc.EOF
- 怎样使 picturebox 中显示的图片在picturebox 中居中显示?
- 有没有人知道win2000与actoCAD2000冲突的解决方法?
- 组件在VB中的调用
- 已经用vb控制将excel 文件打开了,如何在另一个过程中使用
- 执行SQL select 后取得的数据集如何赋值到excel中呢?
1、tcp模式下,不需要自己分包发送,winsock会自动根据当前网络情况分包发送,在接收端只需要将接收到的字节数组按顺序拼接就可以;
2、如果是分块并使用多个winsock来发送的话,就需要自己处理各个块的顺序问题。多对winsock之间的发送顺序和接收顺序可能有差别。
你把数组定义到一个类中,然后创建一个winsock的同时也创建一个类实例,不就每个winsock就有一个自己的数组了。
Dim after As Double
On Error Resume Next
after = Now + 15# / 24# / 3600#
Do
DoEvents
If CICsending = -1 Then
CICsending = tn
If CICsending = tn Then
CICstr = s
TimerCICsend.Enabled = True
Exit Do
End If
End If
If Now > after Then
LogErrMsg "SendCICMsg " + CStr(tn) + "," + s + " 15s overtime!"
CICsending = -1
Exit Do
End If
Loop
End Sub