DuplexClientBase<TChannel> Klasse

Definition

Wird verwendet, um einen Kanal zu einem Duplexdienst zu erstellen und diesen Kanal einem Rückrufobjekt zuzuordnen.

generic <typename TChannel>
 where TChannel : classpublic ref class DuplexClientBase abstract : System::ServiceModel::ClientBase<TChannel>
public abstract class DuplexClientBase<TChannel> : System.ServiceModel.ClientBase<TChannel> where TChannel : class
type DuplexClientBase<'Channel (requires 'Channel : null)> = class
    inherit ClientBase<'Channel (requires 'Channel : null)>
Public MustInherit Class DuplexClientBase(Of TChannel)
Inherits ClientBase(Of TChannel)

Typparameter

TChannel

Der Typ des zu erstellenden Kanals.

Vererbung
DuplexClientBase<TChannel>

Beispiele

Das folgende Beispiel zeigt die Verwendung im Client eines Duplex-WCF-Clienttyps, dem SampleDuplexHelloClient, um ein neues System.ServiceModel.InstanceContext Objekt mit dem Rückrufobjekt zu übergeben, um auf Rückrufe zu lauschen.

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Threading;

namespace Microsoft.WCF.Documentation
{
  [CallbackBehaviorAttribute(
   IncludeExceptionDetailInFaults= true,
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true
  )]
  public class Client : SampleDuplexHelloCallback
  {
    AutoResetEvent waitHandle;

    public Client()
    {
      waitHandle = new AutoResetEvent(false);
    }

    public void Run()
    {
      // Picks up configuration from the configuration file.
      SampleDuplexHelloClient wcfClient
        = new SampleDuplexHelloClient(new InstanceContext(this), "WSDualHttpBinding_SampleDuplexHello");
      try
      {
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("Enter a greeting to send and press ENTER: ");
        Console.Write(">>> ");
        Console.ForegroundColor = ConsoleColor.Green;
        string greeting = Console.ReadLine();
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("Called service with: \r\n\t" + greeting);
        wcfClient.Hello(greeting);
        Console.WriteLine("Execution passes service call and moves to the WaitHandle.");
        this.waitHandle.WaitOne();
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine("Set was called.");
        Console.Write("Press ");
        Console.ForegroundColor = ConsoleColor.Red;
        Console.Write("ENTER");
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.Write(" to exit...");
        Console.ReadLine();
      }
      catch (TimeoutException timeProblem)
      {
        Console.WriteLine("The service operation timed out. " + timeProblem.Message);
        Console.ReadLine();
      }
      catch (CommunicationException commProblem)
      {
        Console.WriteLine("There was a communication problem. " + commProblem.Message);
        Console.ReadLine();
      }
    }
    public static void Main()
    {
      Client client = new Client();
      client.Run();
    }

    public void Reply(string response)
    {
      Console.WriteLine("Received output.");
      Console.WriteLine("\r\n\t" + response);
      this.waitHandle.Set();
    }
  }
}

Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Threading

Namespace Microsoft.WCF.Documentation
  <CallbackBehaviorAttribute(IncludeExceptionDetailInFaults:= True, UseSynchronizationContext:=True, ValidateMustUnderstand:=True)> _
  Public Class Client
      Implements SampleDuplexHelloCallback
    Private waitHandle As AutoResetEvent

    Public Sub New()
      waitHandle = New AutoResetEvent(False)
    End Sub

    Public Sub Run()
      ' Picks up configuration from the configuration file.
      Dim wcfClient As New SampleDuplexHelloClient(New InstanceContext(Me), "WSDualHttpBinding_SampleDuplexHello")
      Try
        Console.ForegroundColor = ConsoleColor.White
        Console.WriteLine("Enter a greeting to send and press ENTER: ")
        Console.Write(">>> ")
        Console.ForegroundColor = ConsoleColor.Green
        Dim greeting As String = Console.ReadLine()
        Console.ForegroundColor = ConsoleColor.White
        Console.WriteLine("Called service with: " & Constants.vbCrLf & Constants.vbTab & greeting)
        wcfClient.Hello(greeting)
        Console.WriteLine("Execution passes service call and moves to the WaitHandle.")
        Me.waitHandle.WaitOne()
        Console.ForegroundColor = ConsoleColor.Blue
        Console.WriteLine("Set was called.")
        Console.Write("Press ")
        Console.ForegroundColor = ConsoleColor.Red
        Console.Write("ENTER")
        Console.ForegroundColor = ConsoleColor.Blue
        Console.Write(" to exit...")
        Console.ReadLine()
      Catch timeProblem As TimeoutException
        Console.WriteLine("The service operation timed out. " & timeProblem.Message)
        Console.ReadLine()
      Catch commProblem As CommunicationException
        Console.WriteLine("There was a communication problem. " & commProblem.Message)
        Console.ReadLine()
      End Try
    End Sub
    Public Shared Sub Main()
      Dim client As New Client()
      client.Run()
    End Sub

    Public Sub Reply(ByVal response As String) Implements SampleDuplexHelloCallback.Reply
      Console.WriteLine("Received output.")
      Console.WriteLine(Constants.vbCrLf & Constants.vbTab & response)
      Me.waitHandle.Set()
    End Sub
  End Class
End Namespace

Hinweise

Verwenden Sie die DuplexClientBase<TChannel> Klasse, um einen Kanal zu einem Dienst zu erstellen, der ein Rückrufobjekt angibt. Das DuplexClientBase<TChannel> Objekt umschließt ein System.ServiceModel.DuplexChannelFactory<TChannel> Objekt, das die Konnektivität für das WCF-Objekt bereitstellt. Sie können einen der beiden Typen verwenden, um eine Verbindung mit einem Duplexdienst herzustellen. Weitere Informationen zu Duplexdiensten finden Sie unter Duplexdienste.

Besondere Notiz für verwaltete C++-Benutzer, die von dieser Klasse abgeleitet werden:

  • Setzen Sie den Bereinigungscode in (On)(Begin)Close (und/oder OnAbort) und nicht in einen Destruktor.
  • Vermeiden Sie Destruktoren: Sie verursachen, dass der Compiler automatisch generiert IDisposable.
  • Vermeiden Sie Nichtverweismitglieder: Sie können dazu führen, dass der Compiler automatisch generiert IDisposablewird.
  • Vermeiden Sie Finalisierer; Wenn Sie jedoch eine einschließen, sollten Sie die Buildwarnung und SuppressFinalize(Object) den Aufruf und den Finalizer selbst von (On)(Begin)Close (und/oder OnAbort) unterdrücken, um zu emulieren, was das automatisch generierte IDisposable Verhalten wäre.

Konstruktoren

Name Beschreibung
DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, der Bindung und der Dienstendpunktadresse.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mit dem angegebenen Rückrufobjekt und dem Dienstendpunkt.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, des Konfigurationsnamens und der Dienstendpunktadresse.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, des Konfigurationsnamens und der Dienstendpunktadresse.

DuplexClientBase<TChannel>(InstanceContext, String)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts und des Konfigurationsnamens.

DuplexClientBase<TChannel>(InstanceContext)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, der Bindung und der Dienstendpunktadresse.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mit dem angegebenen Rückrufobjekt und dem Dienstendpunkt.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, des Konfigurationsnamens und der Dienstendpunktadresse.

DuplexClientBase<TChannel>(Object, String, String)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, des Endpunktkonfigurationsnamens und der Dienstendpunktadresse.

DuplexClientBase<TChannel>(Object, String)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts und des Konfigurationsnamens.

DuplexClientBase<TChannel>(Object)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts.

Eigenschaften

Name Beschreibung
Channel

Ruft den inneren Kanal ab, der zum Senden von Nachrichten an verschiedene konfigurierte Dienstendpunkte verwendet wird.

(Geerbt von ClientBase<TChannel>)
ChannelFactory

Ruft das zugrunde liegende ChannelFactory<TChannel> Objekt ab.

(Geerbt von ClientBase<TChannel>)
ClientCredentials

Ruft die Clientanmeldeinformationen ab, die zum Aufrufen eines Vorgangs verwendet werden.

(Geerbt von ClientBase<TChannel>)
Endpoint

Ruft den Zielendpunkt für den Dienst ab, mit dem der WCF-Client eine Verbindung herstellen kann.

(Geerbt von ClientBase<TChannel>)
InnerChannel

Ruft die zugrunde liegende IClientChannel Implementierung ab.

(Geerbt von ClientBase<TChannel>)
InnerDuplexChannel

Ruft die zugrunde liegende IClientChannel Implementierung für den Duplexkanal ab.

State

Ruft den aktuellen Status des ClientBase<TChannel> Objekts ab.

(Geerbt von ClientBase<TChannel>)

Methoden

Name Beschreibung
Abort()

Bewirkt, dass das ClientBase<TChannel> Objekt sofort vom aktuellen Zustand in den geschlossenen Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
Close()

Bewirkt, dass das ClientBase<TChannel> Objekt vom aktuellen Zustand in den geschlossenen Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
CloseAsync()

Wird verwendet, um einen Kanal zu einem Duplexdienst zu erstellen und diesen Kanal einem Rückrufobjekt zuzuordnen.

(Geerbt von ClientBase<TChannel>)
CreateChannel()

Gibt einen Kanal an den Dienst zurück, der dem an den Konstruktor übergebenen Rückrufobjekt zugeordnet ist.

CreateChannel()

Gibt einen neuen Kanal an den Dienst zurück.

(Geerbt von ClientBase<TChannel>)
DisplayInitializationUI()

Weist den inneren Kanal an, eine Benutzeroberfläche anzuzeigen, wenn ein Kanal vor der Verwendung initialisiert werden muss.

(Geerbt von ClientBase<TChannel>)
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetDefaultValueForInitialization<T>()

Repliziert das Verhalten des Standardschlüsselworts in C#.

(Geerbt von ClientBase<TChannel>)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Bietet Unterstützung für die Implementierung des ereignisbasierten asynchronen Musters. Weitere Informationen zu diesem Muster finden Sie unter "Event-based Asynchronous Pattern Overview".

(Geerbt von ClientBase<TChannel>)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
Open()

Bewirkt, dass das ClientBase<TChannel> Objekt vom erstellten Zustand in den geöffneten Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IAsyncDisposable.DisposeAsync()

Wird verwendet, um einen Kanal zu einem Duplexdienst zu erstellen und diesen Kanal einem Rückrufobjekt zuzuordnen.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.BeginClose(AsyncCallback, Object)

Startet einen asynchronen Vorgang zum Schließen der ClientBase<TChannel>.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Startet einen asynchronen Vorgang zum Schließen des ClientBase<TChannel> Vorgangs mit einem angegebenen Timeout.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.BeginOpen(AsyncCallback, Object)

Startet einen asynchronen Vorgang, um das ClientBase<TChannel> Objekt zu öffnen.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Startet einen asynchronen Vorgang, um das ClientBase<TChannel> Objekt innerhalb eines angegebenen Zeitintervalls zu öffnen.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Close()

Bewirkt, dass ein Kommunikationsobjekt vom aktuellen Zustand in den geschlossenen Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Bewirkt, dass das ClientBase<TChannel> Objekt vom aktuellen Zustand in den geschlossenen Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Closed

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel> Objekt vom aktuellen Zustand zum geschlossenen Zustand gewechselt ist.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Closing

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel> Objekt vom aktuellen Zustand zum geschlossenen Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Schließt einen asynchronen Vorgang ab, um das ClientBase<TChannel> Objekt zu schließen.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Schließt einen asynchronen Vorgang ab, um das ClientBase<TChannel> Objekt zu öffnen.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Faulted

Der Ereignishandler, der beim Ausführen eines Vorgangs für das ClientBase<TChannel> Objekt aufgerufen wird, wenn ein Fehler auftritt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Open()

Bewirkt, dass ein Kommunikationsobjekt vom erstellten Zustand in den geöffneten Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

Bewirkt, dass das ClientBase<TChannel> Objekt innerhalb eines bestimmten Zeitintervalls vom erstellungszustand in den geöffneten Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Opened

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel> Objekt vom erstellungszustand zum geöffneten Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Opening

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel> Objekt vom erstellungszustand zum geöffneten Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
IDisposable.Dispose()

Explizite Implementierung der Dispose() Methode.

(Geerbt von ClientBase<TChannel>)

Gilt für: