public void SensorData_Test_07_Unsubscribe()
        {
            this.ConnectClients();
            try
            {
                ManualResetEvent    Done   = new ManualResetEvent(false);
                ManualResetEvent    Error  = new ManualResetEvent(false);
                IEnumerable <Field> Fields = null;

                SensorDataSubscriptionRequest Request = this.sensorClient.Subscribe(this.client2.FullJID, FieldType.All,
                                                                                    Duration.Parse("PT1S"), Duration.Parse("PT5S"), false);
                Request.OnStateChanged += (sender, NewState) =>
                {
                    Console.Out.WriteLine(NewState.ToString());
                    return(Task.CompletedTask);
                };
                Request.OnErrorsReceived += (sender, Errors) =>
                {
                    Error.Set();
                    return(Task.CompletedTask);
                };
                Request.OnFieldsReceived += (sender, NewFields) =>
                {
                    Fields = NewFields;
                    Done.Set();
                    return(Task.CompletedTask);
                };

                this.sensorServer.NewMomentaryValues(new QuantityField(ThingReference.Empty, DateTime.Now, "Temperature", this.temp, 1, "C",
                                                                       FieldType.Momentary, FieldQoS.AutomaticReadout));

                Assert.AreEqual(0, WaitHandle.WaitAny(new WaitHandle[] { Done, Error }, 10000), "Subscription not performed correctly");

                Done.Reset();
                Request.Unsubscribe();

                this.sensorServer.NewMomentaryValues(new QuantityField(ThingReference.Empty, DateTime.Now, "Temperature", this.temp, 1, "C",
                                                                       FieldType.Momentary, FieldQoS.AutomaticReadout));

                Assert.AreEqual(WaitHandle.WaitTimeout, WaitHandle.WaitAny(new WaitHandle[] { Done, Error }, 10000), "Unsubscription not performed correctly");
            }
            finally
            {
                this.DisposeClients();
            }
        }