/// <summary>
        /// Display message about the device removed.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeviceRemovedEvent(object sender, EventArrivedEventArgs e)
        {
            ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
            string name   = instance.Properties["Name"].Value.ToString();
            string output = name + " is Removed.";

            App.Current.Dispatcher.Invoke((Action) delegate // Trigger action in the UI thread
            {
                if (VCPs.Contains(name))
                {
                    VCPs.Remove(name);
                }
                else if (USBs.Contains(name))
                {
                    USBs.Remove(name);
                }
                Statuses.Add(output);
            });
        }
        /// <summary>
        /// Detect the COM ports.
        /// </summary>
        private void DetectVCPMethod(object sender)
        {
            VCPs.Clear();
            try
            {
                // Find in Win32_PnPEntity id that contains VCP
                ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity WHERE PnPClass='Ports'");

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    if (!VCPs.Contains(queryObj["Name"].ToString()))
                    {
                        VCPs.Add(queryObj["Name"].ToString());
                    }
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }
        }