DuplexClientBase<TChannel> Class

 
System_CAPS_noteNote

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Used to create a channel to a duplex service and associate that channel with a callback object.

Namespace:   System.ServiceModel
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

System.Object
  System.ServiceModel.ClientBase<TChannel>
    System.ServiceModel.DuplexClientBase<TChannel>

public abstract class DuplexClientBase<TChannel> : ClientBase<TChannel>
where TChannel : class

Type Parameters

TChannel

The type of the channel to be created.

NameDescription
System_CAPS_protmethodDuplexClientBase<TChannel>(InstanceContext)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object.

System_CAPS_protmethodDuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, binding, and service endpoint address.

System_CAPS_protmethodDuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Initializes a new instance of the DuplexClientBase<TChannel> class with the specified callback object and service endpoint.

System_CAPS_protmethodDuplexClientBase<TChannel>(InstanceContext, String)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object and configuration name.

System_CAPS_protmethodDuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address.

System_CAPS_protmethodDuplexClientBase<TChannel>(InstanceContext, String, String)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address.

System_CAPS_protmethodDuplexClientBase<TChannel>(Object)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object.

System_CAPS_protmethodDuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, binding, and service endpoint address.

System_CAPS_protmethodDuplexClientBase<TChannel>(Object, ServiceEndpoint)

Initializes a new instance of the DuplexClientBase<TChannel> class with the specified callback object and service endpoint.

System_CAPS_protmethodDuplexClientBase<TChannel>(Object, String)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object and configuration name.

System_CAPS_protmethodDuplexClientBase<TChannel>(Object, String, EndpointAddress)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address.

System_CAPS_protmethodDuplexClientBase<TChannel>(Object, String, String)

Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, endpoint configuration name, and service endpoint address.

NameDescription
System_CAPS_protpropertyChannel

Gets the inner channel used to send messages to variously configured service endpoints.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubpropertyChannelFactory

Gets the underlying ChannelFactory<TChannel> object.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubpropertyClientCredentials

Gets the client credentials used to call an operation.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubpropertyEndpoint

Gets the target endpoint for the service to which the WCF client can connect.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubpropertyInnerChannel

Gets the underlying IClientChannel implementation.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubpropertyInnerDuplexChannel

Gets the inner duplex channel.

System_CAPS_pubpropertyState

Gets the current state of the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.)

NameDescription
System_CAPS_pubmethodAbort()

Causes the ClientBase<TChannel> object to transition immediately from its current state into the closed state.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubmethodClose()

Causes the ClientBase<TChannel> object to transition from its current state into the closed state.(Inherited from ClientBase<TChannel>.)

System_CAPS_protmethodCreateChannel()

Returns a new channel to the service.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubmethodDisplayInitializationUI()

Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethodFinalize()

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_protmethodGetDefaultValueForInitialization<T>()

Replicates the behavior of the default keyword in C#.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethodInvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Provides support for implementing the event-based asynchronous pattern. For more information about this pattern, see Event-based Asynchronous Pattern Overview.(Inherited from ClientBase<TChannel>.)

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethodOpen()

Causes the ClientBase<TChannel> object to transition from the created state into the opened state.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

NameDescription
System_CAPS_pubinterfaceSystem_CAPS_priveventICommunicationObject.Closed

The event handler that is invoked when the ClientBase<TChannel> object has transitioned from its current state to the closed state.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_priveventICommunicationObject.Closing

The event handler that is invoked when the ClientBase<TChannel> object transitions from its current state to the closed state.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_priveventICommunicationObject.Faulted

The event handler that is invoked when a fault occurs while performing an operation on the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_priveventICommunicationObject.Opened

The event handler that is invoked when the ClientBase<TChannel> object transitions from the created state to the opened state.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_priveventICommunicationObject.Opening

The event handler that is invoked when the ClientBase<TChannel> object transitions from the created state to the opened state.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodIDisposable.Dispose()

Explicit implementation of the Dispose method.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICommunicationObject.BeginClose(AsyncCallback, Object)

Begins an asynchronous operation to close the ClientBase<TChannel>.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Begins an asynchronous operation to close the ClientBase<TChannel> with a specified timeout.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICommunicationObject.BeginOpen(AsyncCallback, Object)

Begins an asynchronous operation to open the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Begins an asynchronous operation to open the ClientBase<TChannel> object within a specified interval of time.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICommunicationObject.Close(TimeSpan)

Causes the ClientBase<TChannel> object to transition from its current state into the closed state.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICommunicationObject.EndClose(IAsyncResult)

Completes an asynchronous operation to close the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICommunicationObject.EndOpen(IAsyncResult)

Completes an asynchronous operation to open the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICommunicationObject.Open(TimeSpan)

Causes the ClientBase<TChannel> object to transition from the created state into the opened state within a specified interval of time.(Inherited from ClientBase<TChannel>.)

Use the DuplexClientBase<TChannel> class to create a channel to a service that specifies a callback object. The DuplexClientBase<TChannel> object wraps a System.ServiceModel.DuplexChannelFactory<TChannel> object, which provides the connectivity for the WCF object. You can use either type to connect to a duplex service. For more information about duplex services, see Duplex Services.

Special note for Managed C++ users deriving from this class:

  • Put your cleanup code in (On)(Begin)Close (and/or OnAbort), not in a destructor.

  • Avoid destructors: they cause the compiler to auto-generate IDisposable

  • Avoid non-reference members: they can cause the compiler to auto-generate IDisposable

  • Avoid finalizers; but if you include one, you should suppress the build warning and call SuppressFinalize(Object) and the finalizer itself from (On)(Begin)Close (and/or OnAbort) in order to emulate what would have been the auto-generated IDisposable behavior.

The following example shows the use in the client of a duplex WCF client type, the SampleDuplexHelloClient, to pass a new System.ServiceModel.InstanceContext object with the callback object to listen for callbacks.

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();
    }
  }
}

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 3.0

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show: