vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Datenaustausch - NamedPipes - Multithreading - Datatable 
Autor: Bazi
Datum: 07.06.15 14:57

irgendwo hab ich was falsch gemacht.
Ich bekomme noch immer den gleichen Fehler:
SerializationException wurde nicht behandelt
Die Assembly "TestServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" kann nicht gefunden werden.


Die gesamte Pipe samt TransferDaten habe ich in eine dll ausgelagert. Diese binde ich in beide Projekte ein.

Die Sub für den Server sieht so aus:
  <System.Runtime.InteropServices.ComVisible(True)> _
 Public Sub Serverstart()
        Using PipeServer As New  _
          NamedPipeServerStream(PipeName, PipeDirection.InOut, _
          maxNumberOfServerinstances, PipeTransmissionMode.Message, _
          PipeOptions.Asynchronous)
 
            ZeileAnzeigen("Server: --> warte auf Client..." & " PipeName = " _
              & PipeName)
            PipeServer.WaitForConnection()
            ZeileAnzeigen("Server: --> verbunden")
            PipeOn = True
            While PipeOn
                Try
                    If Not PipeServer.IsConnected Then Serverstart()
                    Using sr As New StreamReader(PipeServer), sw As New _
                      StreamWriter(PipeServer)
                        sw.AutoFlush = True
                        Dim temp As String = String.Empty
                        tcOut = Nothing
                        While (assign(temp, sr.ReadLine())) IsNot Nothing
                            ServerInput = temp
                            If ServerInput.Length > 0 Then RaiseEvent _
                              PropertyChanged(Me, ServerRequest)
                            If Not tcOut Is Nothing Then
                                Dim bf As New BinaryFormatter
                                bf.Serialize(PipeServer, tcOut)
                            End If
                        End While
                        ZeileAnzeigen("Server: --> Daten")
                    End Using
                    'End If
                Catch ex As Exception
                    ' kam Fehler bei beenden Client vor Server --> 
                    ' unterbrochene Pipe
                    ZeileAnzeigen("Server Fehler: --> " & _
                      ex.InnerException.ToString)
                End Try
            End While
            ZeileAnzeigen("Server: --> beende")
        End Using
        PipeOn = False
    End Sub
und für den Client:
  <System.Runtime.InteropServices.ComVisible(True)> _
 Public Sub ClientStart(ByVal AnfrageString As String)
        Using PipeClient As New NamedPipeClientStream(ServerName, PipeName, _
          PipeDirection.InOut, PipeOptions.None, _
          Security.Principal.TokenImpersonationLevel.Impersonation)
            ZeileAnzeigen("Client: --> warte auf Server..." & "PipeName = " _
            & String.Concat(ServerName, ",", PipeName))
            PipeClient.Connect()
            startTimer()
            PipeOn = True
            ZeileAnzeigen("Client: --> verbunden")
            sw = New StreamWriter(PipeClient)
            sw.AutoFlush = True
            sw.WriteLine(AnfrageString)
            ZeileAnzeigen("Client Anfrage: --> " & AnfrageString)
            If Not PipeOn Then PipeClient.Close()
            'Direkte Deserialisierung der empfangenen TC-Instanz
            Dim bfc As New BinaryFormatter
            Dim tc As TransferDaten = CType(bfc.Deserialize(PipeClient), _
              TransferDaten)
            If Not tc Is Nothing Then ClientInput = tc : RaiseEvent _
            PropertyChanged(Me, ClientRequest) : TimeOut.Dispose()
            PipeClient.Close()
            ZeileAnzeigen("Client: --> beendet")
        End Using
    End Sub
zum Fehler kommt es in der Zeile:
Dim tc As TransferDaten = CType(bfc.Deserialize(PipeClient),TransferDaten)

Die Transferdaten werden in der dll zusammengestellt:
    Private tcOut As TransferDaten
    Public TransferTyp As TransferTyp
    Public TransferDataTable As DataTable
    Public TransferString As String
    Public TransferNumber As Decimal
    Public TransferCount As Integer
    Public Sub createTransferdata()
        Try
            tcOut = New TransferDaten
            With tcOut
                .Typ = TransferTyp
                If Not String.IsNullOrEmpty(TransferString) Then .TString = _
                  TransferString
                Select Case TransferTyp
                    Case NamedPipe.TransferTyp.Count
                        .TCount = TransferCount
                    Case NamedPipe.TransferTyp.Table
                        .CTable = TransferDataTable
                    Case NamedPipe.TransferTyp.Decimal
                        .TNumber = TransferNumber
                End Select
            End With
        Catch ex As Exception
            tcOut = Nothing
        End Try
    End Sub

Danke für die Hilfe

Gruß Christian

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Datenaustausch - NamedPipes - Multithreading - Datatable4.534Bazi26.05.15 21:53
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.629Blackbox26.05.15 22:12
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.727Manfred X27.05.15 06:13
Ergänzender Hinweis3.643Manfred X27.05.15 08:21
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.619Bazi27.05.15 10:27
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.824Manfred X27.05.15 13:37
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.613Bazi27.05.15 14:30
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.547Bazi12.06.15 22:19
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.617Bazi14.06.15 14:23
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.585Bazi06.06.15 22:03
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.594Kuno6007.06.15 01:28
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.567Bazi07.06.15 09:10
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.964Bazi07.06.15 14:57
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.574Manfred X07.06.15 15:24
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.659Bazi07.06.15 15:53
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.637Manfred X07.06.15 18:37
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.728Bazi07.06.15 19:46
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.600Manfred X07.06.15 22:19
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.596Bazi08.06.15 07:39
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.531Tommi46712.06.15 08:43
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.531Bazi12.06.15 09:18
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.562Manfred X12.06.15 10:57
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.485Bazi24.06.15 21:08
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.539Manfred X24.06.15 21:16
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.571Bazi25.06.15 20:11
Re: Datenaustausch - NamedPipes - Multithreading - Datatable3.460Manfred X25.06.15 20:14

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel