7,759
社区成员
发帖
与我相关
我的任务
分享
dim xx as long
xx=87
on error resume next
ReLoad:
load CONTROLS(xx) '尝试加载控件
if err.number<>0 then '出错,说明控件已存在,Index加一,直至加载成功
err.clear
xx=xx+1
goto ReLoad
end if
dim colReIndex As New Collection '定义一个Collection对象回收已卸载的Index
'加载
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal RequestID As Long)
Dim myWinsock As Winsock
Dim maxWinsockIndex As Long
maxWinsockIndex = 0
If colReIndex.Count = 0 Then
For Each myWinsock In Winsock1 '如果没卸载过Winsock,则计算当前Index的最大值
If myWinsock.Index > maxWinsockIndex Then
maxWinsockIndex = myWinsock.Index
End If
maxWinsockIndex = maxWinsockIndex + 1 '取当前Index最大值+1
Next
Else
maxWinsockIndex = colReIndex.Item(1) '如果有卸载的,则重复利用卸载的Index
colReIndex.Remove (1) '从删除被重复使用的Index
End If
Load Winsock1(maxWinsockIndex)
…………
end sub
'卸载的时候回收Index
Private Sub Winsock1_Close(Index As Integer)
Winsock1(Index).Close '关闭链接
Unload Winsock1(Index) '卸载相应的控件
colReIndex.Add Index '将Index添加到回收器
…………
End Sub