title: WCF - IsOneway is not behaving like it is Oneway operation
body: <p>I have defined OneWay attribute on some of the methods of my service but they are not behaving like its a Oneway call. My Client waits for the call to complete and return from the service. I am assuming that Oneway operations are non-blocking operations and client doesnt care what happens to the called function. It just calls and forgets abt it. Is it correct?</p>
  
  <p>Problem:
  After calling OperationContract2, I immediately close the proxy but my client waits for the exection to complete.</p>
  
  <pre><code>    if (((ICommunicationObject)myServices).State == CommunicationState.Opened)
          {
          ((ICommunicationObject)myServices).Close();
          }
  </code></pre>
  
  <p>Is there something wrong with the configs?</p>
  
  <p>Server Config:</p>
  
  <pre><code>  &lt;netTcpBinding&gt;
      &lt;binding name="GoCustomBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="0" maxReceivedMessageSize="2147483647"&gt;
      &lt;/binding&gt;
    &lt;/netTcpBinding&gt;
  </code></pre>
  
  <p>Service Contract:</p>
  
  <pre><code>[ServiceContract]
  public interface IMyServices
  {
      [OperationContract(IsOneWay = true, Action = "*")]
      void OPeration1(List&lt;int&gt; someIds);
  
      [OperationContract(IsOneWay = true)]
      void OPeration2(SomeClass p1);
  
  }
  </code></pre>
  
  <p>Client Proxy:</p>
  
  <pre><code>[ServiceContract]
  public interface IMyServices
  {
      [OperationContract(IsOneWay = true, Action = "*")]
      void Operation1(List&lt;int&gt; someIds);
  
      [OperationContract(IsOneWay = true)]
      void Operation2(SomeClass p1);
  }
  
  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
  public class ServiceClient : ClientBase&lt;IMyServices&gt;, IMyServices
  {
      public void ScheduleOptimization(List&lt;int&gt; someIds)
      {
          Channel.Operation1(routeID);
      }
  
      public void Operation1(SomeClass p1)
      {
          Channel.Operation2(pasDataMsg);
      }
  }
  </code></pre>