DuplexClientBase<TChannel> Class
Used to create a channel to a duplex service and associate that channel with a callback object.
Assembly: System.ServiceModel (in System.ServiceModel.dll)
System.ServiceModel.ClientBase<TChannel>
System.ServiceModel.DuplexClientBase<TChannel>
| Name | Description | |
|---|---|---|
![]() | DuplexClientBase<TChannel>(InstanceContext) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object. |
![]() | DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, binding, and service endpoint address. |
![]() | DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint) | Initializes a new instance of the DuplexClientBase<TChannel> class with the specified callback object and service endpoint. |
![]() | DuplexClientBase<TChannel>(InstanceContext, String) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object and configuration name. |
![]() | DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address. |
![]() | DuplexClientBase<TChannel>(InstanceContext, String, String) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address. |
![]() | DuplexClientBase<TChannel>(Object) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object. |
![]() | DuplexClientBase<TChannel>(Object, Binding, EndpointAddress) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, binding, and service endpoint address. |
![]() | DuplexClientBase<TChannel>(Object, ServiceEndpoint) | Initializes a new instance of the DuplexClientBase<TChannel> class with the specified callback object and service endpoint. |
![]() | DuplexClientBase<TChannel>(Object, String) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object and configuration name. |
![]() | DuplexClientBase<TChannel>(Object, String, EndpointAddress) | Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address. |
![]() | DuplexClientBase<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. |
| Name | Description | |
|---|---|---|
![]() | Channel | Gets the inner channel used to send messages to variously configured service endpoints.(Inherited from ClientBase<TChannel>.) |
![]() | ChannelFactory | Gets the underlying ChannelFactory<TChannel> object.(Inherited from ClientBase<TChannel>.) |
![]() | ClientCredentials | Gets the client credentials used to call an operation.(Inherited from ClientBase<TChannel>.) |
![]() | Endpoint | Gets the target endpoint for the service to which the WCF client can connect.(Inherited from ClientBase<TChannel>.) |
![]() | InnerChannel | Gets the underlying IClientChannel implementation.(Inherited from ClientBase<TChannel>.) |
![]() | InnerDuplexChannel | Gets the inner duplex channel. |
![]() | State | Gets the current state of the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.) |
| Name | Description | |
|---|---|---|
![]() | Abort() | Causes the ClientBase<TChannel> object to transition immediately from its current state into the closed state.(Inherited from ClientBase<TChannel>.) |
![]() | Close() | Causes the ClientBase<TChannel> object to transition from its current state into the closed state.(Inherited from ClientBase<TChannel>.) |
![]() | CreateChannel() | Returns a new channel to the service.(Inherited from ClientBase<TChannel>.) |
![]() | DisplayInitializationUI() | 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>.) |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetDefaultValueForInitialization<T>() | Replicates the behavior of the default keyword in C#.(Inherited from ClientBase<TChannel>.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | InvokeAsync(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>.) |
![]() | MemberwiseClone() | |
![]() | Open() | Causes the ClientBase<TChannel> object to transition from the created state into the opened state.(Inherited from ClientBase<TChannel>.) |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() ![]() | ICommunicationObject.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>.) |
![]() ![]() | ICommunicationObject.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>.) |
![]() ![]() | ICommunicationObject.Faulted | The event handler that is invoked when a fault occurs while performing an operation on the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.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>.) |
![]() ![]() | ICommunicationObject.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>.) |
![]() ![]() | IDisposable.Dispose() | Explicit implementation of the Dispose method.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.BeginClose(AsyncCallback, Object) | Begins an asynchronous operation to close the ClientBase<TChannel>.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object) | Begins an asynchronous operation to close the ClientBase<TChannel> with a specified timeout.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.BeginOpen(AsyncCallback, Object) | Begins an asynchronous operation to open the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object) | Begins an asynchronous operation to open the ClientBase<TChannel> object within a specified interval of time.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.Close(TimeSpan) | Causes the ClientBase<TChannel> object to transition from its current state into the closed state.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.EndClose(IAsyncResult) | Completes an asynchronous operation to close the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.EndOpen(IAsyncResult) | Completes an asynchronous operation to open the ClientBase<TChannel> object.(Inherited from ClientBase<TChannel>.) |
![]() ![]() | ICommunicationObject.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(); } } }
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.






