DuplexClientBase<TChannel> Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für