I AM MAKING A POOL GAME PROGRAM, ITS KIND A RE-WRITE OF BUTCH'S GAME CLIENT BUT WITH MULTISOCKET

EVERYTHING WAS GOING FINE UNTIL USER JOIN'S TABLE

AS TABLE SHOW'S UP FORM STOP'S RESPONDING TO SOME EVENTS !!

FEW PARTIAL CODES ARE


WHOLE TABLE CODE name as fTable in my project

Code:
Option Explicit

Private TableNumber	 As String
Private IndexNumber	 As Integer
Private isActivated	 As Boolean
Private mySeat		  As Integer

Private Sub cmbTableState_Click()
	If cmbTableState.ListIndex = 0 Then
		Call yGamesOwner.yGames(IndexNumber).TableState(TableNumber, [public])
	ElseIf cmbTableState.ListIndex = 1 Then
		Call yGamesOwner.yGames(IndexNumber).TableState(TableNumber, [Protected])
	ElseIf cmbTableState.ListIndex = 2 Then
		Call yGamesOwner.yGames(IndexNumber).TableState(TableNumber, [Private])
	End If
End Sub

Private Sub cmdBoot_Click()
	If lvTableUser.ListItems.Count <= 0 Then Exit Sub
	If lvTableUser.SelectedItem.Selected = True Then
		yGamesOwner.yGames(IndexNumber).BootFromTable lvTableUser.SelectedItem.Text, TableNumber
	Else
		MsgBox "Select User To Boot From Userlist"
	End If
End Sub

Private Sub cmdInvite_Click()
	Unload frmRoomUser
	InviteFrom = IndexNumber
	InvitationTable = TableNumber
	frmRoomUser.Show
End Sub

Private Sub cmdResign_Click()
	If mySeat > -1 Then
		yGamesOwner.yGames(IndexNumber).Resign TableNumber, CStr(mySeat)
	End If
End Sub

Private Sub cmdSeat_Click(Index As Integer)
Dim X As Integer
	If Index > TotalSeat Then Exit Sub
	Select Case cmdSeat(Index).Caption
		Case "Sit"
			yGamesOwner.yGames(IndexNumber).Sit TableNumber, CStr(Index)
			mySeat = Index
			For X = 0 To 3
				If X <> Index Then
					cmdSeat(X).Enabled = False
				End If
			Next
			cmdStart.Enabled = True
			cmdResign.Enabled = True
		Case "Stand"
			yGamesOwner.yGames(IndexNumber).StandUp TableNumber
			mySeat = -1
			For X = 0 To 3
				If lblUsername(X).Caption = "" Then
					If X + 1 <= TotalSeat Then
						cmdSeat(X).Enabled = True
					End If
				End If
			Next
			cmdStart.Enabled = False
			cmdResign.Enabled = False
	End Select
End Sub

Private Sub cmdStart_Click()
	If mySeat > -1 Then
		yGamesOwner.yGames(IndexNumber).ClickStart TableNumber
	End If
End Sub

Private Sub Form_Activate()
	If isActivated = True Then Exit Sub
	isActivated = True
	IndexNumber = TableInfo(Me.Tag).yIndex
	TableNumber = TableInfo(Me.Tag).tNumber
	Call TableHostChanged
	Call SetState
	Call PopulateTableUsers(TableNumber)
	mySeat = -1
End Sub

Private Sub Form_Load()
	Call FixThemeSupport(Controls)
	isActivated = False
End Sub

Private Sub PopulateTableUsers(mTable As String)
Dim X As Integer, y As Integer, tmpUser As String, Viewers As String
	X = yGamesOwner.TableExist(mTable)
	If X > 0 Then
		For y = 1 To 4
			tmpUser = yGamesOwner.lvRoom.ListItems(X).SubItems(y)
			If tmpUser <> "" Then
				Call AddUser(tmpUser)
				Call UserSat(y - 1, tmpUser)
			Else
				If y <= TotalSeat Then
					cmdSeat(y - 1).Enabled = True
				End If
			End If
		Next
		
		Viewers = yGamesOwner.lvRoom.ListItems(X).SubItems(5)
		
		For y = 0 To UBound(Split(Viewers, ", ")) - 1
			tmpUser = Split(Viewers, ", ")(y)
			If tmpUser <> "" Then
				Call AddUser(tmpUser)
			End If
		Next
	End If
End Sub

Public Sub EnableHostControl(e As Boolean)
	cmbTableState.Locked = Not e
	cmdInvite.Enabled = e
	cmdBoot.Enabled = e
End Sub

Private Sub Form_Unload(Cancel As Integer)
	yGamesOwner.yGames(IndexNumber).LeaveTable TableNumber
	Unload Me
End Sub
   
Private Sub lvTableUser_DblClick()
	If lvTableUser.ListItems.Count = 0 Then Exit Sub
	If lvTableUser.SelectedItem.Selected = True Then
		yGamesOwner.yGames(IndexNumber).InfoUser LCase(lvTableUser.SelectedItem.Text)
	End If
End Sub

Private Sub txtTableMsg_KeyPress(KeyAscii As Integer)
	If KeyAscii = 13 Then
		KeyAscii = 0
		If txtTableMsg = "" Then Exit Sub
		Call yGamesOwner.yGames(IndexNumber).SendTableMessage(txtTableMsg, TableNumber)
		txtTableMsg.Text = ""
	End If
End Sub

Public Sub TableHostChanged()
	Me.Caption = "Joined As - " & getRealUser(yGamesOwner.yGames(IndexNumber).Username) & " Table - " & TableNumber & " Host - " & getRealUser(TableHosts(TableNumber))
	If LCase(yGamesOwner.yGames(IndexNumber).Username) = LCase(TableHosts(TableNumber)) Then
		Call EnableHostControl(True)
		Call AddMessage(txtTableChat, vbBlue, "*** You Are Host Of This Table Now, This Gives You Power To **** Anyone Off The Table." & vbCrLf, True)
	Else
		Call EnableHostControl(False)
	End If
End Sub

Public Sub SetState()
Dim X As Integer, mState As Integer
	X = yGamesOwner.TableExist(TableNumber)
	If X > 0 Then
		mState = CInt(yGamesOwner.lvRoom.ListItems(X).SubItems(6))
		cmbTableState.ListIndex = mState
	End If
End Sub

Public Sub AddUser(theUser As String)
Dim X As Integer
	X = userExists(theUser)
	Debug.Print "Test Event Raised"
	If X = 0 Then
		lvTableUser.ListItems.Add , , getRealUser(theUser)
		Call AddMessage(txtTableChat, vbBlue, "*** " & getRealUser(theUser) & " Joined The Table." & vbCrLf, True)
	End If
End Sub

Public Sub RemoveUser(theUser As String)
Dim X As Integer
	X = userExists(theUser)
	If X > 0 Then
		lvTableUser.ListItems.Remove X
		Call AddMessage(txtTableChat, vbBlue, "*** " & getRealUser(theUser) & " Left The Table." & vbCrLf, True)
	End If
End Sub

Public Sub UserSat(Seat As Integer, theUser As String)
	cmdStart.Enabled = False
	cmdResign.Enabled = False
	If LCase(yGamesOwner.yGames(IndexNumber).Username) = LCase(theUser) Then
		cmdSeat(Seat).Enabled = True
		cmdSeat(Seat).Caption = "Stand"
		lblUsername(Seat).Caption = getRealUser(theUser)
	Else
		cmdSeat(Seat).Enabled = False
		cmdSeat(Seat).Caption = "Sit"
		lblUsername(Seat).Caption = getRealUser(theUser)
	End If
End Sub

Public Sub UserStood(Seat As Integer)
	lblUsername(Seat).Caption = ""
	If mySeat > 0 Then
		cmdSeat(Seat).Enabled = True
	Else
		cmdSeat(Seat).Enabled = False
	End If
	cmdSeat(Seat).Caption = "Sit"
End Sub

Public Function userExists(theUser As String)
Dim lvItem As ListItem
	Set lvItem = lvTableUser.FindItem(theUser, lvwText, , lvwWhole)
	If Not lvItem Is Nothing Then
		userExists = lvItem.Index
	Else
		userExists = 0
	End If
End Function


the real problem starts here
Code:
Private Sub yGames_UserJoinedTable(Index As Integer, FixedUser As String, Table As String)
Dim X As Integer, y As Integer
	
	If Index = 1 Then
		If LobbySpam(3).Value = vbChecked Then
			YGames(1).SendLobbyMessage Replace(Replace(lSpamTxt(3).Text, "%USER%", getRealUser(FixedUser), , , vbTextCompare), "%TABLENUM%", Table, , , vbTextCompare)
		End If
	End If
	
	If Index = 1 Then
		Call AddTableViewer(Table, getRealUser(FixedUser))
		DoEvents
	End If


If LCase(yGames(Index).Username) = LCase(FixedUser) Then
	X = getFreeTable
	TableInfo(X).tNumber = Table
	TableInfo(X).yIndex = Index
	TableInfo(X).fIndex = X
	Set Tables(X) = New fTable
	Tables(X).Tag = X
	Tables(X).Show
End If

Y = getTable(Index, Table)
If Y > 0 Then
	Tables(TableInfo(Y).fIndex).AddUser FixedUser
End If
		
End Sub
to my knowledge all variables are declared everything is fine except the form freeze (in sense that i dont show any dataarrival from the usercontrol !!


if any 1 has a better way to handle may form plz let me know,

my prog with load max 255 socket & each socket can hold max 11 tables !!



Regard's
Raj