Freigeben über


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, 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. Sie können einen der beiden Typen verwenden, um eine Verbindung mit einem Duplexdienst herzustellen. Weitere Informationen zu Duplexdiensten finden Sie unter Duplex services.

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 führen dazu, dass der Compiler automatisch IDisposable

  • Vermeiden von Nichtverweismitgliedern: Sie können dazu führen, dass der Compiler automatisch IDisposable

  • Vermeiden Sie Finalisierer; Wenn Sie jedoch eine einschließen, sollten Sie die Buildwarnung unterdrücken und SuppressFinalize(Object) und den Finalizer selbst aus (On)(Begin)Close (und/oder OnAbort) aufrufen, um zu emulieren, was das automatisch generierte IDisposable Verhalten wäre.

Konstruktoren

DuplexClientBase<TChannel>(InstanceContext)

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

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe der angegebenen Rückrufobjekt-, Bindungs- und 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 mithilfe des angegebenen Rückrufobjekts und des Konfigurationsnamens.

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>(Object)

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 der angegebenen Rückrufobjekt-, Bindungs- und 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 mithilfe des angegebenen Rückrufobjekts und des Konfigurationsnamens.

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.

Eigenschaften

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

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 Ereignisbasierte asynchrones Musterübersicht.

(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

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, um die ClientBase<TChannel>zu schließen.

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

Startet einen asynchronen Vorgang, um die 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)

Beginnt 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 von seinem aktuellen Zustand in den geschlossenen Zustand umgestellt wurde.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Closing

Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel>-Objekt vom aktuellen Zustand in den 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 aufgerufen wird, wenn beim Ausführen eines Vorgangs für das ClientBase<TChannel>-Objekt 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 Zeitraums vom erstellten Zustand in den geöffneten Zustand übergehen soll.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Opened

Der Ereignishandler, der aufgerufen wird, wenn der ClientBase<TChannel> Objekt vom erstellten Zustand in den geöffneten Zustand wechselt.

(Geerbt von ClientBase<TChannel>)
ICommunicationObject.Opening

Der Ereignishandler, der aufgerufen wird, wenn der ClientBase<TChannel> Objekt vom erstellten Zustand in den geöffneten Zustand wechselt.

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

Explizite Implementierung der Dispose()-Methode.

(Geerbt von ClientBase<TChannel>)

Erweiterungsmethoden

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguriert, wie auf die von einem asynchronen Einweg zurückgegebenen Aufgaben gewartet wird.

Gilt für: