private static void initProxy(int timeout) { if (!IsAlive) { _proxyClient = new PrioritizerServiceClient(); _proxyClient.InnerChannel.Faulted += new EventHandler(InnerChannel_Faulted); } Task pingTask = Task.Factory.StartNew(() => pingAsync(_loggedInUser)); bool succeed = false; try { succeed = pingTask.Wait(timeout); } catch (Exception ex) { } finally { if (succeed && pingTask.Exception == null) { IsAlive = true; setHeartbeatInterval(PING_INTERVAL); } else { IsAlive = false; Logger.Instance.Warn(string.Format("Ping timeout: {0} ms", PING_TIMEOUT)); setHeartbeatInterval(PING_INTERVAL / 2); } } }
private void Form1_Shown(object sender, EventArgs e) { PrioritizerServiceClient proxy = new PrioritizerServiceClient(); //ClientPackage package = proxy.getLatestClient(); //using (System.IO.StreamWriter outfile = new System.IO.StreamWriter(@"C:\2.zip")) //{ // outfile.Write(package.zip); // outfile.Close(); //} lblInfo.Text = "Checking for new version..."; Thread.Sleep(300); string packageDirectory = Directory.GetCurrentDirectory() + PACKAGE_FOLDER_NAME; if (Directory.Exists(packageDirectory)) { Application.DoEvents(); if (!Directory.Exists(PRIORITIZER_INSTALL_DIR)) { Directory.CreateDirectory(PRIORITIZER_INSTALL_DIR); lblInfo.Text = "Copy prioritizer package to local disk..."; CopyDirectory(packageDirectory, PRIORITIZER_INSTALL_DIR); //Thread.Sleep(2000); } else { var mostUpdatedClientVersion = proxy.getClientVersion(); var config = ConfigurationManager.OpenExeConfiguration(PRIORITIZER_INSTALL_DIR + PRIORITIZER_APPLICATION_EXECUTABLE_NAME); var actualClientVersionOnLocalMachine = config.AppSettings.Settings["currentVer"]; if (mostUpdatedClientVersion != actualClientVersionOnLocalMachine.Value) { var userChoice = MessageBox.Show("New Prioritizer version exists. You Need to upgrade your Prioritizer version.\nClick 'OK' to terminate existing instances and get latest version.\nClick 'Cancel' to exit", "Upgrade", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (userChoice == System.Windows.Forms.DialogResult.OK) { var prioritizerInstances = System.Diagnostics.Process.GetProcessesByName("prioritizer"); foreach (var instance in prioritizerInstances) { instance.Kill(); } } else { Application.Exit(); return; } lblInfo.Text = "Copy prioritizer package to local disk..."; CopyDirectory(packageDirectory, PRIORITIZER_INSTALL_DIR); //Thread.Sleep(2000); } } } else { lblInfo.Text = "Can't find package folder to copy from\nPlease contact administrator"; Application.DoEvents(); return; } lblInfo.Text = "Launching Prioritizer from local disk..."; Application.DoEvents(); Thread.Sleep(500); System.Diagnostics.Process.Start(PRIORITIZER_INSTALL_DIR + PRIORITIZER_APPLICATION_EXECUTABLE_NAME); lblInfo.Text = "Exiting..."; Application.DoEvents(); Thread.Sleep(500); Application.Exit(); }