DuplexClientBase<TChannel> Třída

Definice

Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání.

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)

Parametry typu

TChannel

Typ kanálu, který se má vytvořit.

Dědičnost
DuplexClientBase<TChannel>

Příklady

Následující příklad ukazuje použití v klientovi typu duplexního klienta WCF , SampleDuplexHelloClientk předání nového System.ServiceModel.InstanceContext objektu s objektem zpětného volání pro naslouchání zpětným voláním.

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

Poznámky

DuplexClientBase<TChannel> Pomocí třídy vytvořte kanál pro službu, která určuje objekt zpětného volání. Objekt DuplexClientBase<TChannel> zalomí System.ServiceModel.DuplexChannelFactory<TChannel> objekt, který poskytuje připojení k objektu WCF. K oboustranné službě se můžete připojit pomocí libovolného typu. Další informace o duplexním službách najdete v tématu Duplex Services.

Zvláštní poznámka pro uživatele spravovaného jazyka C++, kteří jsou odvozeni z této třídy:

  • Vložte kód čištění do (On)(Begin)Close (a/nebo OnAbort), ne do destruktoru.

  • Vyhněte se destruktorům: způsobují automatické generování kompilátoru IDisposable

  • Vyhněte se ne referenčním členům: Můžou způsobit automatické vygenerování kompilátoru. IDisposable

  • Vyhněte se finalizátorům; Pokud ale zahrnete, měli byste potlačit upozornění na sestavení a volat SuppressFinalize(Object) a samotný finalizační proces z (On)(Begin)Close (nebo OnAbort) za účelem emulace automaticky generovaného IDisposable chování.

Konstruktory

DuplexClientBase<TChannel>(InstanceContext)

Inicializuje novou instanci DuplexClientBase<TChannel> třídy pomocí zadaného zpětného volání objektu.

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Inicializuje novou instanci třídy pomocí zadaného objektu zpětného volání, vazby a adresy koncového DuplexClientBase<TChannel> bodu služby.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Inicializuje novou instanci DuplexClientBase<TChannel> třídy se zadaným objektem zpětného volání a koncovým bodem služby.

DuplexClientBase<TChannel>(InstanceContext, String)

Inicializuje novou instanci DuplexClientBase<TChannel> třídy pomocí zadaného objektu zpětného volání a názvu konfigurace.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Inicializuje novou instanci třídy pomocí zadaného objektu zpětného DuplexClientBase<TChannel> volání, názvu konfigurace a adresy koncového bodu služby.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Inicializuje novou instanci třídy pomocí zadaného objektu zpětného DuplexClientBase<TChannel> volání, názvu konfigurace a adresy koncového bodu služby.

DuplexClientBase<TChannel>(Object)

Inicializuje novou instanci DuplexClientBase<TChannel> třídy pomocí zadaného zpětného volání objektu.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Inicializuje novou instanci třídy pomocí zadaného objektu zpětného volání, vazby a adresy koncového DuplexClientBase<TChannel> bodu služby.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Inicializuje novou instanci DuplexClientBase<TChannel> třídy se zadaným objektem zpětného volání a koncovým bodem služby.

DuplexClientBase<TChannel>(Object, String)

Inicializuje novou instanci DuplexClientBase<TChannel> třídy pomocí zadaného objektu zpětného volání a názvu konfigurace.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Inicializuje novou instanci třídy pomocí zadaného objektu zpětného DuplexClientBase<TChannel> volání, názvu konfigurace a adresy koncového bodu služby.

DuplexClientBase<TChannel>(Object, String, String)

Inicializuje novou instanci třídy pomocí zadaného objektu zpětného volání, názvu konfigurace koncového DuplexClientBase<TChannel> bodu a adresy koncového bodu služby.

Vlastnosti

Channel

Získá vnitřní kanál používaný k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

(Zděděno od ClientBase<TChannel>)
ChannelFactory

Získá základní ChannelFactory<TChannel> objekt.

(Zděděno od ClientBase<TChannel>)
ClientCredentials

Získá přihlašovací údaje klienta použité k volání operace.

(Zděděno od ClientBase<TChannel>)
Endpoint

Získá cílový koncový bod pro službu, ke které se klient WCF může připojit.

(Zděděno od ClientBase<TChannel>)
InnerChannel

Získá základní IClientChannel implementaci.

(Zděděno od ClientBase<TChannel>)
InnerDuplexChannel

Získá základní IClientChannel implementaci duplexního kanálu.

State

Získá aktuální stav objektu ClientBase<TChannel> .

(Zděděno od ClientBase<TChannel>)

Metody

Abort()

Způsobí okamžitý ClientBase<TChannel> přechod objektu z aktuálního stavu do uzavřeného stavu.

(Zděděno od ClientBase<TChannel>)
Close()

Způsobí přechod objektu ClientBase<TChannel> z aktuálního stavu do uzavřeného stavu.

(Zděděno od ClientBase<TChannel>)
CloseAsync()

Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání.

(Zděděno od ClientBase<TChannel>)
CreateChannel()

Vrátí kanál službě přidružené k objektu zpětného volání předaného konstruktoru.

CreateChannel()

Vrátí nový kanál do služby.

(Zděděno od ClientBase<TChannel>)
DisplayInitializationUI()

Instruuje vnitřní kanál, aby zobrazil uživatelské rozhraní, pokud se vyžaduje k inicializaci kanálu před jeho použitím.

(Zděděno od ClientBase<TChannel>)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetDefaultValueForInitialization<T>()

Replikuje chování výchozího klíčového slova v jazyce C#.

(Zděděno od ClientBase<TChannel>)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Poskytuje podporu pro implementaci asynchronního vzoru založeného na událostech. Další informace o tomto vzoru najdete v tématu Přehled asynchronních vzorů založených na událostech.

(Zděděno od ClientBase<TChannel>)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
Open()

ClientBase<TChannel> Způsobí přechod objektu z vytvořeného stavu do otevřeného stavu.

(Zděděno od ClientBase<TChannel>)
OpenAsync()

Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání.

(Zděděno od ClientBase<TChannel>)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

IAsyncDisposable.DisposeAsync()

Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.BeginClose(AsyncCallback, Object)

Zahájí asynchronní operaci k zavření objektu ClientBase<TChannel>.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Zahájí asynchronní operaci, která ukončí ClientBase<TChannel> operaci se zadaným časovým limitem.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.BeginOpen(AsyncCallback, Object)

Zahájí asynchronní operaci k otevření objektu ClientBase<TChannel> .

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Zahájí asynchronní operaci, která ClientBase<TChannel> otevře objekt v zadaném časovém intervalu.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Close()

Způsobí přechod komunikačního objektu z aktuálního stavu do uzavřeného stavu.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Způsobí přechod objektu ClientBase<TChannel> z aktuálního stavu do uzavřeného stavu.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Closed

Obslužná rutina události, která je vyvolána při přechodu objektu ClientBase<TChannel> z aktuálního stavu do uzavřeného stavu.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Closing

Obslužná rutina události, která je vyvolána při přechodu objektu ClientBase<TChannel> z aktuálního stavu do uzavřeného stavu.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Dokončí asynchronní operaci k zavření objektu ClientBase<TChannel> .

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Dokončí asynchronní operaci k otevření objektu ClientBase<TChannel> .

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Faulted

Obslužná rutina události, která je vyvolána, když dojde k chybě při provádění operace s objektem ClientBase<TChannel> .

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Open()

Způsobí přechod komunikačního objektu z vytvořeného stavu do otevřeného stavu.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

Způsobí přechod objektu ClientBase<TChannel> z vytvořeného stavu do otevřeného stavu v zadaném časovém intervalu.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Opened

Obslužná rutina události, která je vyvolána při ClientBase<TChannel> přechodu objektu z vytvořeného stavu do otevřeného stavu.

(Zděděno od ClientBase<TChannel>)
ICommunicationObject.Opening

Obslužná rutina události, která je vyvolána při ClientBase<TChannel> přechodu objektu z vytvořeného stavu do otevřeného stavu.

(Zděděno od ClientBase<TChannel>)
IDisposable.Dispose()

Explicitní implementace Dispose() metody.

(Zděděno od ClientBase<TChannel>)

Metody rozšíření

CloseHelperAsync(ICommunicationObject, TimeSpan)

Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání.

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguruje, jak se provádí čekání na úlohy vrácené z asynchronního jednorázového použití.

Platí pro