分類:[VB.NET/VB2005 以降]
開発環境:Windows Vista
開発言語:VB2008
いつもお世話になっております。
以前ソケット通信について指導をうけましたが、
今回はその破棄方法について相談があります。
とあるフォームのボタン押下イベントで以下のメソッドが実行されます。
(以下のメソッドのみ実行されます。)
Public Sub SocketClose()
SyncLock Me.syncSocket
If Not Me._socket Is Nothing Then
If Me._socket.Connected = True Then
' 'ソケットを閉じる
Me._socket.Shutdown(Sockets.SocketShutdown.Both)
Me._socket.Close()
End If
Me._socket = Nothing
End If
If Not (Me._receivedBytes Is Nothing) Then
Me._receivedBytes.Close()
Me._receivedBytes = Nothing
End If
End SyncLock
' 'ソケット切断イベントを発生
Me.Disconnected(New EventArgs)
End Sub
変数については
Private _socket As Sockets.Socket
Private _receivedBytes As System.IO.MemoryStream
Protected ReadOnly syncSocket As New Object
以上のソースはDOBON.NET様のサイトを利用させていただきました。
上記メソッドのうち、End SyncLockの処理後
System.NullReferenceExceptionの初回例外が発生します。
End SyncLockの前後でsyncSockeがnothing等になっていたり、
クラスが破棄されていないか確認したのですが、
そうではありませんでした。
初心者の学習用のソースですが、何卒ご教授願います。
|