diff --git a/M2Mqtt/MqttClient.cs b/M2Mqtt/MqttClient.cs
index 3345aa50..806b2846 100644
--- a/M2Mqtt/MqttClient.cs
+++ b/M2Mqtt/MqttClient.cs
@@ -21,6 +21,7 @@ Paolo Patierno - initial API and implementation and/or initial documentation
 using System.Security.Cryptography.X509Certificates;
 #endif
 using System.Threading;
+using System.Threading.Tasks;
 using uPLibrary.Networking.M2Mqtt.Exceptions;
 using uPLibrary.Networking.M2Mqtt.Messages;
 using uPLibrary.Networking.M2Mqtt.Session;
@@ -885,7 +886,7 @@ private void OnConnectionClosing()
             }
         }
 
-        /// <summary>
+	/// <summary>
         /// Wrapper method for raising PUBLISH message received event
         /// </summary>
         /// <param name="publish">PUBLISH message received</param>
@@ -893,8 +894,9 @@ private void OnMqttMsgPublishReceived(MqttMsgPublish publish)
         {
             if (this.MqttMsgPublishReceived != null)
             {
-                this.MqttMsgPublishReceived(this,
-                    new MqttMsgPublishEventArgs(publish.Topic, publish.Message, publish.DupFlag, publish.QosLevel, publish.Retain));
+                Task.Run(() => this.MqttMsgPublishReceived(this,
+                    new MqttMsgPublishEventArgs(publish.Topic, publish.Message, publish.DupFlag, publish.QosLevel, publish.Retain)));
+                
             }
         }