﻿<?xml version="1.0" encoding="utf-8"?><Type Name="IInteractiveChannelInitializer" FullName="System.ServiceModel.Dispatcher.IInteractiveChannelInitializer"><TypeSignature Language="C#" Value="public interface IInteractiveChannelInitializer" /><TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IInteractiveChannelInitializer" /><AssemblyInfo><AssemblyName>System.ServiceModel</AssemblyName><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Interfaces /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Implement the <see cref="T:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer" /> interface to enable a client application to display a user interface that enables the user of the application to create or select the credentials prior to opening a channel. </para><para>To implement <see cref="T:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer" />, perform the following steps in <see cref="M:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer.BeginDisplayInitializationUI(System.ServiceModel.IClientChannel,System.AsyncCallback,System.Object)" />:</para><list type="ordered"><item><para>Prompt the user and obtain an appropriate <see cref="T:System.Net.NetworkCredential" />. </para></item><item><para>Add a custom channel parameter object to the collection returned by the <see cref="M:System.ServiceModel.Channels.IChannel.GetProperty``1" /> method on the <see cref="T:System.ServiceModel.IClientChannel" /> object with a type parameter of <see cref="T:System.ServiceModel.Channels.ChannelParameterCollection" />. This channel parameter object is used by the custom <see cref="T:System.ServiceModel.ClientCredentialsSecurityTokenManager" /> to establish the security tokens for the channel.</para></item><item><para>Return. </para></item></list><para>To insert <see cref="T:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer" />:</para><list type="ordered"><item><para>Override the <see cref="M:System.ServiceModel.Description.IEndpointBehavior.ApplyClientBehavior(System.ServiceModel.Description.ServiceEndpoint,System.ServiceModel.Dispatcher.ClientRuntime)" /> method on the <see cref="T:System.ServiceModel.Description.ClientCredentials" /> class. </para></item><item><para>In that method, determine whether the endpoint requires an <see cref="T:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer" /> and if so, add the <see cref="T:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer" /> to the <see cref="P:System.ServiceModel.Dispatcher.ClientRuntime.InteractiveChannelInitializers" /> collection. </para></item></list><para>There are two ways application developers can make use of an inserted <see cref="T:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer" />. The client application can call either <see cref="M:System.ServiceModel.ClientBase`1.DisplayInitializationUI" /> or <see cref="M:System.ServiceModel.IClientChannel.DisplayInitializationUI" /> (or an asynchronous version) prior to opening the channel (the <newTerm>explicit</newTerm> approach) or simply call the first operation (the <newTerm>implicit</newTerm> approach).</para><para>If using the implicit approach, the application must call the first operation on an <see cref="T:System.ServiceModel.ClientBase`1" /> or <see cref="T:System.ServiceModel.IClientChannel" /> extension. If it calls anything other than the first operation, an exception is thrown.</para><para>If using the explicit approach, the application must perform the following steps in order:</para><list type="ordered"><item><para>Call either <see cref="M:System.ServiceModel.ClientBase`1.DisplayInitializationUI" /> or <see cref="M:System.ServiceModel.IClientChannel.DisplayInitializationUI" /> (or an asynchronous version). </para></item><item><para>When the initializers have returned, call either the <see cref="M:System.ServiceModel.ICommunicationObject.Open" /> method on the <see cref="T:System.ServiceModel.IClientChannel" /> object or on the <see cref="T:System.ServiceModel.IClientChannel" /> object returned from the <see cref="P:System.ServiceModel.ClientBase`1.InnerChannel" /> property. </para></item><item><para>Call operations. </para></item></list><para>It is recommended that production-quality applications control of the user-interface process by adopting the explicit approach.</para><para>Applications that use the implicit approach invoke the user-interface initializers, but if the user of the application fails to respond within the send timeout period of the binding, an exception is thrown when the user interface returns. </para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Defines the methods that enable a client application to display a user interface to collect identity information prior to creating the channel.</para></summary></Docs><Members><Member MemberName="BeginDisplayInitializationUI"><MemberSignature Language="C#" Value="public IAsyncResult BeginDisplayInitializationUI (System.ServiceModel.IClientChannel channel, AsyncCallback callback, object state);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.IAsyncResult BeginDisplayInitializationUI(class System.ServiceModel.IClientChannel channel, class System.AsyncCallback callback, object state) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.IAsyncResult</ReturnType></ReturnValue><Parameters><Parameter Name="channel" Type="System.ServiceModel.IClientChannel" /><Parameter Name="callback" Type="System.AsyncCallback" /><Parameter Name="state" Type="System.Object" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>To implement <see cref="T:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer" />, perform the following steps in <see cref="M:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer.BeginDisplayInitializationUI(System.ServiceModel.IClientChannel,System.AsyncCallback,System.Object)" />:</para><list type="ordered"><item><para>Prompt the user in what way you see fit and obtain an appropriate <see cref="T:System.Net.NetworkCredential" />. </para></item><item><para>Add a custom channel parameter object to the collection returned by the <see cref="M:System.ServiceModel.Channels.IChannel.GetProperty``1" /> method on the <see cref="T:System.ServiceModel.IClientChannel" /> object with a type parameter of <see cref="T:System.ServiceModel.Channels.ChannelParameterCollection" />. This channel parameter object is used by the custom <see cref="T:System.ServiceModel.ClientCredentialsSecurityTokenManager" /> to establish the security tokens for the channel.</para></item><item><para>Return. </para></item></list></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>An asynchronous call to begin using a user interface to obtain credential information.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.IAsyncResult" /> to use to call back when processing has completed.</para></returns><param name="channel"><attribution license="cc4" from="Microsoft" modified="false" />The client channel.</param><param name="callback"><attribution license="cc4" from="Microsoft" modified="false" />The callback object.</param><param name="state"><attribution license="cc4" from="Microsoft" modified="false" />Any state data.</param></Docs></Member><Member MemberName="EndDisplayInitializationUI"><MemberSignature Language="C#" Value="public void EndDisplayInitializationUI (IAsyncResult result);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void EndDisplayInitializationUI(class System.IAsyncResult result) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="result" Type="System.IAsyncResult" /></Parameters><Docs><remarks>To be added.</remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Called when the <see cref="M:System.ServiceModel.Dispatcher.IInteractiveChannelInitializer.BeginDisplayInitializationUI(System.ServiceModel.IClientChannel,System.AsyncCallback,System.Object)" /> has finished.</para></summary><param name="result"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.IAsyncResult" />.</param></Docs></Member></Members></Type>