private async Task MessageReceiveAsync(object sender, MessageReceivedEventArgs e) { using (await _messageReceivedLock.LockAsync()) { var gsm = GsmList.FirstOrDefault(c => c.Model == (GsmCommMain)sender); var obj = e.IndicationObject; var loc = (MemoryLocation)obj; if (gsm == null) { return; } var messages = await Task.Run(() => gsm.GetMessagesAsync(PhoneMessageStatus.ReceivedUnread, loc.Storage)); foreach (var message in messages) { if (MessageList.Contains(message)) { return; } MessageList.Insert(0, message); EnqueueMessage(message); } } }