title: MQQueueManager constructor hangs if Queue Manager is unavailable and transaction is used
body: <p>I have an issue where the call the MQQueueManager constructor is hanging if the queue manager is down.</p>
  
  <p>I have a TransactionScope open with EnterpriseOptions.Full when I call the constructor to the MQQueueManager.  If MQ is down though (or possibly attempts a connect as the QM goes down) then this call hangs.  Even if the transaction expires it doesn't raise a timeout exception in the transaction.</p>
  
  <p>If I don't have the transaction scope open when I do the connect, I can never get the MQQueueManager to participate in a transaction after that point.</p>
  
  <p>SO, if the MQ can go down (which it does....) how can I stop the queue from hanging when I make the connection.  I am using the Managed client from MQ 6.0.2.5.  </p>
  
  <p>I've added some code to make the question clearer:</p>
  
  <pre><code>TransactionOptions opt = new TransactionOptions();
  opt.IsolationLevel = IsolationLevel.Serializable;
  opt.Timeout = new TimeSpan(0, 0, 20);
  TransactionScopeOption ScopeOption = TransactionScopeOption.Required;
  
  using (TransactionScope tran = 
      new TransactionScope
          (ScopeOption, 
          opt, 
          EnterpriseServicesInteropOption.Full))
  {
      //This line hangs if MQ is down, doesn't backout or throw a 2059.
      var m_qMgr = new MQQueueManager(QueueManager, Channel, Hostname);
      tran.Complete();
  }
  </code></pre>