public static void CheckThread() { // Get the URI from the command line. Uri httpSite = new Uri(url); // Create the request object. WebRequest wreq = WebRequest.Create(httpSite); // Create the state object. RequestState rs = new RequestState(); // Put the request into the state object so it can be passed around. rs.Request = wreq; // Issue the async request. IAsyncResult r = (IAsyncResult)wreq.BeginGetResponse( new AsyncCallback(RespCallback), rs); // Wait until the ManualResetEvent is set so that the application // does not exit until after the callback is called. //allDone.WaitOne(); //Console.WriteLine(rs.RequestData.ToString()); }
private static void ReadCallBack(IAsyncResult asyncResult) { try { // Get the RequestState object from AsyncResult. RequestState rs = (RequestState)asyncResult.AsyncState; // Retrieve the ResponseStream that was set in RespCallback. Stream responseStream = rs.ResponseStream; // Read rs.BufferRead to verify that it contains data. int read = responseStream.EndRead(asyncResult); if (read > 0) { // Prepare a Char array buffer for converting to Unicode. Char[] charBuffer = new Char[BUFFER_SIZE]; // Convert byte stream to Char array and then to String. // len contains the number of characters converted to Unicode. int len = rs.StreamDecode.GetChars(rs.BufferRead, 0, read, charBuffer, 0); String str = new String(charBuffer, 0, len); // Append the recently read data to the RequestData stringbuilder // object contained in RequestState. rs.RequestData.Append( Encoding.ASCII.GetString(rs.BufferRead, 0, read)); // Continue reading data until // responseStream.EndRead returns –1. IAsyncResult ar = responseStream.BeginRead( rs.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), rs); } else { if (rs.RequestData.Length > 0) { // Display data to the console. string strContent; strContent = rs.RequestData.ToString(); parseVersion(strContent); if (buildVersion < newestBuildVersion) { if (silent && RegMemory.GetInt("checkUpdateSkipBuild", 0) == newestBuildVersion) { return; // User didn't want to see this update. } Main.main.Invoke(RHUpdater.Execute); } else if (!silent) { // MessageBox.Show("No new updates available.\r\nYou are using the latest version.", "Update status", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show(Trans.T("L_NO_NEW_UPDATES"), Trans.T("L_UPDATE_STATUS"), MessageBoxButtons.OK, MessageBoxIcon.Information); } } // Close down the response stream. responseStream.Close(); // Set the ManualResetEvent so the main thread can exit. allDone.Set(); } } finally { Main.main.Invoke(RHUpdater.Finished); } return; }