public static void Main(string[] args)
 {
     using (WebRequest req = new WebRequest())
     {
         string downloadedChangelog = req.DownloadStringAsync(new Uri("http://www.site.com/changelog.txt"));
         changelogLabel.Text = downloadedChangelog;
     }
 }
        /// <summary>
        /// Set the state of a relay
        /// </summary>
        /// <param name="intRelay"></param>
        /// <param name="blnState"></param>
        public void Relay_Set(int intRelay, bool blnState)
        {
            string strOnOff = BoolToText(blnState).ToUpper();

            string strAddress = string.Format("{0}outlet?{1}={2}", DeviceUri, intRelay, strOnOff);

            WebRequest.DownloadStringAsync(new Uri(strAddress), "Relay_Set");

            _blnStatus[intRelay] = blnState;
            OnStatusChanged();
        }
        /// <summary>
        /// Turn all relays on or off.  Note: the device may sequence the relays depending on other settings.
        /// </summary>
        /// <param name="blnState"></param>
        public void Relay_SetAll(bool blnState)
        {
            string strOnOff = BoolToText(blnState).ToUpper();

            string strAddress = string.Format("{0}outlet?a={1}", DeviceUri, strOnOff);

            WebRequest.DownloadStringAsync(new Uri(strAddress), "Relay_SetAll");

            for (int i = 1; i <= 8; i++)
            {
                _blnStatus[i] = blnState;
            }
            OnStatusChanged();
        }
        /// <summary>
        /// Ask the device to send the current status.
        /// </summary>
        public void RefreshStatus()
        {
            string strUriIndex = string.Format("{0}index.htm", DeviceUri);

            WebRequest.DownloadStringAsync(new Uri(strUriIndex), "RefreshStatus");
        }