/// <summary> /// Wait for message with requested type in 'this' queue /// </summary> /// <returns>first message in queue if it matches for request type. Null if exited by condition</returns> public T WaitForMessage(Type type, FinishCondition finish = null, LoopAction action = null) { while (true) { if (finish != null && finish()) { return(null); } if (action != null) { action.Execute(); } CloudQueueMessage startMsg = GetMessage(); if (startMsg == null) { System.Threading.Thread.Sleep(1000); continue; } DeleteMessage(startMsg); T message = ConvertMessage(startMsg); if (message.GetType() == type) { return(message); } } }