''' ''' stellt den Erben "Server" und "Client" 2 verschiedene ''' Message-Events zur Verfügung, und ein Event-Raisendes Dispose ''' Public MustInherit Class ManagedPipe : Implements IDisposable Public Delegate Sub EventHandlerWithOneArgument(Of T0)(Sender As T0) ''' ''' Zur Ausgabe chat-verwaltungstechnischer Status-Informationen ''' Public Event StatusMessage As EventHandler(Of DataEventArgs) ''' Zur Ausgabe von Chat-Messages Public Event RetriveData As EventHandler(Of DataEventArgs) Public Event Disposed As EventHandlerWithOneArgument(Of ManagedPipe) Private _IsDisposed As Boolean = False Protected MustOverride Sub Dispose(disposing As Boolean) Public MustOverride Sub Send(bytes As Byte()) Public MustOverride Function SendAsnyc(bytes As Byte()) As Task Protected Sub OnStatusMessage(ByVal e As DataEventArgs) RaiseEvent StatusMessage(Me, e) End Sub Protected Sub OnRetriveData(ByVal e As DataEventArgs) RaiseEvent RetriveData(Me, e) End Sub Public Sub RemoveFrom(Of T As ManagedPipe)(ByVal Coll As ICollection(Of T)) Coll.Remove(DirectCast(Me, T)) End Sub Public ReadOnly Property IsDisposed() As Boolean Get Return _IsDisposed End Get End Property Public Sub AddTo(Of T As ManagedPipe)(ByVal Coll As ICollection(Of T)) Coll.Add(Me) End Sub Public Sub Dispose() Implements IDisposable.Dispose If _IsDisposed Then Return _IsDisposed = True Dispose(True) ' rufe die erzwungenen Überschreibungen von Sub Dispose(Boolean) RaiseEvent Disposed(Me) GC.SuppressFinalize(Me) End Sub End Class