﻿<?xml version="1.0" encoding="utf-8"?><Type Name="IInputChannel" FullName="System.ServiceModel.Channels.IInputChannel"><TypeSignature Language="C#" Value="public interface IInputChannel : System.ServiceModel.Channels.IChannel" /><TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IInputChannel implements class System.ServiceModel.Channels.IChannel, class System.ServiceModel.ICommunicationObject" /><AssemblyInfo><AssemblyName>System.ServiceModel</AssemblyName><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Interfaces><Interface><InterfaceName>System.ServiceModel.Channels.IChannel</InterfaceName></Interface></Interfaces><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.ServiceModel.Channels.IInputChannel" /> contract includes synchronous and asynchronous variants of receive, try-to-receive and wait-for-a-message functionality. </para><para>The pull model is used typically with an <see cref="T:System.ServiceModel.Channels.IInputChannel" /> to receive messages: you call <see cref="Overload:System.ServiceModel.Channels.IInputChannel.Receive" /> (to "pull" a message out of the channel) and then wait for a message to arrive. An alternative usage pattern is to call <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginWaitForMessage(System.TimeSpan,System.AsyncCallback,System.Object)" /> or <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginWaitForMessage(System.TimeSpan,System.AsyncCallback,System.Object)" />, and then call <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive(System.TimeSpan)" />. This approach is common for transactional usages where you start the transaction between the calls to <see cref="M:System.ServiceModel.Channels.IInputChannel.WaitForMessage(System.TimeSpan)" /> and <see cref="Overload:System.ServiceModel.Channels.IInputChannel.Receive" />.</para><para>An <see cref="T:System.ServiceModel.Channels.IInputChannel" /> is not necessarily bound to a single sender. Other channels and channel interfaces can provide a correlation between particular senders and an <see cref="T:System.ServiceModel.Channels.IInputChannel" />, but the base contract makes no such restriction. An implementation can create a new <see cref="T:System.ServiceModel.Channels.IInputChannel" /> for each message or reuse the same <see cref="T:System.ServiceModel.Channels.IInputChannel" /> for multiple messages and senders.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Defines the interface that a channel must implement to receive a message. </para></summary></Docs><Members><Member MemberName="BeginReceive"><MemberSignature Language="C#" Value="public IAsyncResult BeginReceive (AsyncCallback callback, object state);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.IAsyncResult BeginReceive(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="callback" Type="System.AsyncCallback" /><Parameter Name="state" Type="System.Object" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use the asynchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginReceive" /> method when you want the application processing to continue without waiting for the request to be received. Use the synchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> method when it is acceptable for the current thread to be blocked until the request message is received or the interval of time specified by the <paramref name="timeout" /> has been exceeded. The asynchronous operation is available with or without an explicit timeout. </para><para>This method receives notification, through a callback, of the identity of the event handler for the operation. The operation is not complete until a message becomes available in the channel.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Begins an asynchronous operation to receive a message that has a state object associated with it. </para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.IAsyncResult" /> that references the asynchronous message reception. </para></returns><param name="callback"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.AsyncCallback" /> delegate that receives the notification of the asynchronous operation completion.</param><param name="state"><attribution license="cc4" from="Microsoft" modified="false" />An object, specified by the application, that contains state information associated with the asynchronous operation.</param></Docs></Member><Member MemberName="BeginReceive"><MemberSignature Language="C#" Value="public IAsyncResult BeginReceive (TimeSpan timeout, AsyncCallback callback, object state);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.IAsyncResult BeginReceive(valuetype System.TimeSpan timeout, 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="timeout" Type="System.TimeSpan" /><Parameter Name="callback" Type="System.AsyncCallback" /><Parameter Name="state" Type="System.Object" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use the asynchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginReceive" /> method when you want the application processing to continue without waiting for the request to be received. Use the synchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> method when it is acceptable for the current thread to be blocked until the request message is received or the interval of time specified by the <paramref name="timeout" /> has been exceeded. The asynchronous operation is available with or without an explicit timeout. </para><para>The operation is not complete until either a message becomes available in the channel or the time out occurs.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Begins an asynchronous operation to receive a message that has a specified time out and state object associated with it. </para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.IAsyncResult" /> that references the asynchronous receive operation.</para></returns><param name="timeout"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.Timespan" /> that specifies the interval of time to wait for a message to become available.</param><param name="callback"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.AsyncCallback" /> delegate that receives the notification of the asynchronous operation completion.</param><param name="state"><attribution license="cc4" from="Microsoft" modified="false" />An object, specified by the application, that contains state information associated with the asynchronous operation.</param></Docs></Member><Member MemberName="BeginTryReceive"><MemberSignature Language="C#" Value="public IAsyncResult BeginTryReceive (TimeSpan timeout, AsyncCallback callback, object state);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.IAsyncResult BeginTryReceive(valuetype System.TimeSpan timeout, 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="timeout" Type="System.TimeSpan" /><Parameter Name="callback" Type="System.AsyncCallback" /><Parameter Name="state" Type="System.Object" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use the asynchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginTryReceive(System.TimeSpan,System.AsyncCallback,System.Object)" /> method when you want the application processing to continue without waiting. Use the synchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.TryReceive(System.TimeSpan,System.ServiceModel.Channels.Message@)" /> method when it is acceptable for the current thread to be blocked while it replies to the request message or until the timeout interval is exceeded.</para><para>The operation is not complete until either a message becomes available in the channel or the timeout occurs.</para><para>If you are going to handle timeouts and not just re-throw or wrap the <see cref="T:System.TimeoutException" />, then you should call <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginTryReceive(System.TimeSpan,System.AsyncCallback,System.Object)" /> instead of <see cref="Overload:System.ServiceModel.Channels.IInputChannel.BeginReceive" />. </para><para>If you are not going to treat timeouts specially then just call <see cref="Overload:System.ServiceModel.Channels.IInputChannel.BeginReceive" />, otherwise you lose error information.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Begins an asynchronous operation to receive a message that has a specified time out and state object associated with it. </para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.IAsyncResult" /> that references the asynchronous receive operation.</para></returns><param name="timeout"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.Timespan" /> that specifies the interval of time to wait for a message to become available.</param><param name="callback"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.AsyncCallback" /> delegate that receives the notification of the asynchronous operation completion.</param><param name="state"><attribution license="cc4" from="Microsoft" modified="false" />An object, specified by the application, that contains state information associated with the asynchronous operation.</param></Docs></Member><Member MemberName="BeginWaitForMessage"><MemberSignature Language="C#" Value="public IAsyncResult BeginWaitForMessage (TimeSpan timeout, AsyncCallback callback, object state);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.IAsyncResult BeginWaitForMessage(valuetype System.TimeSpan timeout, 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="timeout" Type="System.TimeSpan" /><Parameter Name="callback" Type="System.AsyncCallback" /><Parameter Name="state" Type="System.Object" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use the asynchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginWaitForMessage(System.TimeSpan,System.AsyncCallback,System.Object)" /> method if you need the application processing to continue without waiting for the message to arrive. Use the synchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.WaitForMessage(System.TimeSpan)" /> method when it is acceptable for the current thread to be blocked while it waits for a message to arrive in the queue. The thread is blocked up to the specified <paramref name="timeout" />.</para><para>This method receives notification, through a callback, of the identity of the event handler for the operation. The operation is not complete until either a message becomes available in the channel or the time out occurs.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Begins an asynchronous wait-for-a-message-to-arrive operation that has a specified time out and state object associated with it. </para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.IAsyncResult" /> that references the asynchronous operation to wait for a message to arrive.</para></returns><param name="timeout"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.Timespan" /> that specifies the interval of time to wait for a message to become available.</param><param name="callback"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.AsyncCallback" /> delegate that receives the notification of the asynchronous operation completion.</param><param name="state"><attribution license="cc4" from="Microsoft" modified="false" />An object, specified by the application, that contains state information associated with the asynchronous operation.</param></Docs></Member><Member MemberName="EndReceive"><MemberSignature Language="C#" Value="public System.ServiceModel.Channels.Message EndReceive (IAsyncResult result);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.ServiceModel.Channels.Message EndReceive(class System.IAsyncResult result) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.ServiceModel.Channels.Message</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>Completes an asynchronous operation to receive a message. </para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.ServiceModel.Channels.Message" /> received. </para></returns><param name="result"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.IAsyncResult" /> returned by a call to one of the <see cref="Overload:System.ServiceModel.Channels.IInputChannel.BeginReceive" /> methods.</param></Docs></Member><Member MemberName="EndTryReceive"><MemberSignature Language="C#" Value="public bool EndTryReceive (IAsyncResult result, out System.ServiceModel.Channels.Message message);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool EndTryReceive(class System.IAsyncResult result, class System.ServiceModel.Channels.Message message) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="result" Type="System.IAsyncResult" /><Parameter Name="message" Type="System.ServiceModel.Channels.Message&amp;" RefType="out" /></Parameters><Docs><param name="result">To be added.</param><param name="message">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="EndWaitForMessage"><MemberSignature Language="C#" Value="public bool EndWaitForMessage (IAsyncResult result);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool EndWaitForMessage(class System.IAsyncResult result) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</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>Completes the specified asynchronous wait-for-a-message operation.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>true if a message has arrived before the <paramref name="timeout" /> has been exceeded; otherwise false.</para></returns><param name="result"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.IAsyncResult" /> that identifies the <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginWaitForMessage(System.TimeSpan,System.AsyncCallback,System.Object)" /> operation to finish, and from which to retrieve an end result.</param></Docs></Member><Member MemberName="LocalAddress"><MemberSignature Language="C#" Value="public System.ServiceModel.EndpointAddress LocalAddress { get; }" /><MemberSignature Language="ILAsm" Value=".property instance class System.ServiceModel.EndpointAddress LocalAddress" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.ServiceModel.EndpointAddress</ReturnType></ReturnValue><Docs><value>To be added.</value><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>If this input channel does not have a standalone address (for example, it is the input-side of a client-initiated TCP channel), then this property is null. </para><para>This property can be used by higher-level channels for correlation purposes. For example, if a higher-level channel implements request-reply on top of a <see cref="T:System.ServiceModel.Channels.IDuplexChannel" />, it can use the <see cref="P:System.ServiceModel.Channels.IInputChannel.LocalAddress" /> property in the WS-Addressing ReplyTo header. </para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets the address on which the input channel receives messages. </para></summary></Docs></Member><Member MemberName="Receive"><MemberSignature Language="C#" Value="public System.ServiceModel.Channels.Message Receive ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.ServiceModel.Channels.Message Receive() cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.ServiceModel.Channels.Message</ReturnType></ReturnValue><Parameters /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use the synchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> method when it is acceptable for the current thread to be blocked until it receives the request message or exceeds the interval of time specified by <paramref name="timeout" />. Use the asynchronous <see cref="Overload:System.ServiceModel.Channels.IInputChannel.BeginReceive" /> method when you want the application processing to continue without waiting for the request to be received. </para><para>The synchronous <see cref="Overload:System.ServiceModel.Channels.IInputChannel.Receive" /> operation is available with or without an explicit timeout.</para><para>If a message is not available, it blocks until one is available or until the timeout is exceeded.</para><para><see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> can be called multiple times or concurrently. Only one <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> call can complete for each message received.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Returns the message received, if one is available. If a message is not available, blocks for a default interval of time.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.ServiceModel.Channels.Message" /> received. </para></returns></Docs></Member><Member MemberName="Receive"><MemberSignature Language="C#" Value="public System.ServiceModel.Channels.Message Receive (TimeSpan timeout);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.ServiceModel.Channels.Message Receive(valuetype System.TimeSpan timeout) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.ServiceModel.Channels.Message</ReturnType></ReturnValue><Parameters><Parameter Name="timeout" Type="System.TimeSpan" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use the synchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> method when it is acceptable for the current thread to be blocked until it receives the request message or exceeds the interval of time specified by <paramref name="timeout" />. Use the asynchronous <see cref="Overload:System.ServiceModel.Channels.IInputChannel.BeginReceive" /> method when you want the application processing to continue without waiting for the request to be received. </para><para>The synchronous <see cref="Overload:System.ServiceModel.Channels.IInputChannel.Receive" /> operation is available with or without an explicit timeout.</para><para>If a message is not available, it blocks until one is available or until the timeout is exceeded.</para><para><see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> can be called multiple times or concurrently. Only one <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> call can complete for each message received. </para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Returns the message received, if one is available. If a message is not available, blocks for a specified interval of time.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.ServiceModel.Channels.Message" /> received. </para></returns><param name="timeout"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.Timespan" /> that specifies how long the receive operation has to complete before timing out and throwing a <see cref="T:System.TimeoutException" />.</param></Docs></Member><Member MemberName="TryReceive"><MemberSignature Language="C#" Value="public bool TryReceive (TimeSpan timeout, out System.ServiceModel.Channels.Message message);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool TryReceive(valuetype System.TimeSpan timeout, class System.ServiceModel.Channels.Message message) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="timeout" Type="System.TimeSpan" /><Parameter Name="message" Type="System.ServiceModel.Channels.Message&amp;" RefType="out" /></Parameters><Docs><param name="timeout">To be added.</param><param name="message">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="WaitForMessage"><MemberSignature Language="C#" Value="public bool WaitForMessage (TimeSpan timeout);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool WaitForMessage(valuetype System.TimeSpan timeout) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="timeout" Type="System.TimeSpan" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Calling <see cref="M:System.ServiceModel.Channels.IInputChannel.WaitForMessage(System.TimeSpan)" /> does not result in a message being received or processed in any other way.</para><para>The <see cref="M:System.ServiceModel.Channels.IInputChannel.WaitForMessage(System.TimeSpan)" /> method exists primarily for transacted scenarios where the user wants to receive the message using a transaction. When using just <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> normally for this, the user must create the transaction and then call <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> and hope the message arrives before the transaction times out, which may not be possible.</para><para>Instead, the user can call <see cref="M:System.ServiceModel.Channels.IInputChannel.WaitForMessage(System.TimeSpan)" /> with whatever time out they want (even infinite), then when a message arrives they can open the transaction, call <see cref="M:System.ServiceModel.Channels.IInputChannel.Receive" /> and be confident that they can get the message back before the transaction expires.</para><para>This method is synchronous, so it blocks the current thread until a message is available or the time out occurs. Use <see cref="M:System.ServiceModel.Channels.IInputChannel.WaitForMessage(System.TimeSpan)" /> when it is acceptable for the current thread to be blocked while it waits for a message to arrive in the queue. The thread is blocked up to the specified <paramref name="timeout" />. If you need the application processing to continue without waiting, use the asynchronous <see cref="M:System.ServiceModel.Channels.IInputChannel.BeginWaitForMessage(System.TimeSpan,System.AsyncCallback,System.Object)" /> method.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Returns a value that indicates whether a message has arrived within a specified interval of time.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>true if a message has arrived before the <paramref name="timeout" /> has been exceeded; otherwise false.</para></returns><param name="timeout"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.Timespan" /> specifies the maximum interval of time to wait for a message to arrive before timing out.</param></Docs></Member></Members></Type>