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 Kanaltyp, der erstellt werden soll.

Vererbung
DuplexClientBase<TChannel>

Beispiele

Das folgende Beispiel zeigt die Verwendung eines WCF-Duplexclienttyps im Client, der 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. Für die Verbindung mit einem Duplexdienst können Sie einen beliebigen Typ verwenden. Weitere Informationen zu Duplexdiensten finden Sie unter Duplexdienste.

Spezieller Hinweis für Benutzer von Managed C++, die von dieser Klasse ableiten:

  • Fügen Sie den Bereinigungscode in (On)(Begin)Close (and/or OnAbort) ein, nicht in einen Destruktor.

  • Vermeiden Sie Destruktoren: Sie bewirken, dass der Compiler IDisposable automatisch generiert.

  • Vermeiden Sie Member ohne Verweis: Sie können bewirken, dass der Compiler IDisposable automatisch generiert.

  • Vermeiden Sie Finalizer. Wenn Sie dennoch einen Finalizer verwenden, sollten Sie die Buildwarnung unterdrücken und SuppressFinalize(Object) sowie den Finalizer über (On)(Begin)Close (and/or OnAbort) aufrufen, um das ansonsten automatisch generierte IDisposable-Verhalten zu emulieren.

Konstruktoren

DuplexClientBase<TChannel>(InstanceContext)

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

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel>-Klasse unter Verwendung 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)

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

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

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

DuplexClientBase<TChannel>(InstanceContext, String, String)

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

DuplexClientBase<TChannel>(Object)

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

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel>-Klasse unter Verwendung 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)

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

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

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

DuplexClientBase<TChannel>(Object, String, String)

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

Eigenschaften

Channel

Ruft den inneren Kanal ab, der verwendet wird, um Meldungen an unterschiedlich konfigurierte Endpunkte zu senden.

(Geerbt von ClientBase<TChannel>)
ChannelFactory

Ruft das zugrunde liegende ChannelFactory<TChannel>-Objekt ab.

(Geerbt von ClientBase<TChannel>)
ClientCredentials

Ruft die Clientanmeldeinformationen ab, die verwendet werden, um einen Vorgang aufzurufen.

(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 Zustand des ClientBase<TChannel>-Objekts ab.

(Geerbt von ClientBase<TChannel>)

Methoden

Abort()

Bewirkt, dass das ClientBase<TChannel>-Objekt von seinem aktuellen Zustand in den geschlossenen Zustand übergeht.

(Geerbt von ClientBase<TChannel>)
Close()

Bewirkt, dass ein ClientBase<TChannel>-Objekt von seinem 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 zu dem 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 eine solche zum Initialisieren des Kanals vor der Verwendung erforderlich ist.

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

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetDefaultValueForInitialization<T>()

Repliziert das Verhalten des Standardschlüsselworts in C#.

(Geerbt von ClientBase<TChannel>)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

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

Bietet Unterstützung für das Implementieren des ereignisbasierten asynchronen Musters. Weitere Informationen zu diesem Muster finden Sie unter Übersicht über ereignisbasierte asynchrone Muster.

(Geerbt von ClientBase<TChannel>)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
Open()

Bewirkt, dass das ClientBase<TChannel>-Objekt vom Erstellt-Zustand in den Geöffnet-Zustand übergeht.

(Geerbt von ClientBase<TChannel>)
OpenAsync()

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

(Geerbt von ClientBase<TChannel>)
ToString()

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

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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)

Beginnt einen asynchronen Vorgang, um ClientBase<TChannel> zu schließen.

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

Startet einen asynchronen Vorgang, um ClientBase<TChannel> mit einem angegebenen Timeout zu schließen.

(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 übergeht.

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

Bewirkt, dass ein ClientBase<TChannel>-Objekt von seinem aktuellen Zustand in den geschlossenen Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Closed

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel>-Objekt von seinem aktuellen Zustand in den geschlossenen Zustand übergegangen ist.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Closing

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel>-Objekt von seinem aktuellen Zustand in den geschlossenen Zustand übergeht.

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

Beendet einen asynchronen Vorgang, um das ClientBase<TChannel>-Objekt zu schließen.

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

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

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Faulted

Der Ereignishandler, der aufgerufen wird, wenn beim Ausführen eines Vorgangs auf dem ClientBase<TChannel>-Objekt ein Fehler auftritt.

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

Bewirkt den Übergang eines Kommunikationsobjekts aus dem Erstellt-Zustand in den Geöffnet-Zustand.

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

Bewirkt, dass das ClientBase<TChannel>-Objekt innerhalb eines angegebenen Zeitraums vom Erstellt-Zustand in den Geöffnet-Zustand übergeht.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Opened

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel>-Objekt vom Erstellt-Zustand in den Geöffnet-Zustand übergeht.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Opening

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel>-Objekt vom Erstellt-Zustand in den Geöffnet-Zustand übergeht.

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

Eine explizite Implementierung der Dispose()-Methode.

(Geerbt von ClientBase<TChannel>)

Erweiterungsmethoden

CloseHelperAsync(ICommunicationObject, TimeSpan)

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

OpenHelperAsync(ICommunicationObject, TimeSpan)

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

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguriert, wie Wartezeiten auf die Aufgaben angewandt werden, die von einem asynchronen verwerfbaren Element zurückgegeben werden.

Gilt für: