///<summary> ///</summary> ///<param name="url"></param> ///<param name="browser"></param> ///<param name="timeout"></param> ///<returns></returns> ///<exception cref="ArgumentNullException"></exception> ///<exception cref="InvalidOperationException"></exception> public RequestEventArgs RunTest(string url, WebBrowser browser, TimeSpan timeout) { if (browser == null) { throw new ArgumentNullException("browser"); } if (string.IsNullOrEmpty(browser.ExecutablePath)) { throw new InvalidOperationException("The specified browser could not be located."); } if (timeout.TotalMilliseconds == 0.0) { timeout = TimeSpan.FromMinutes(1.0); } var waitHandle = new AutoResetEvent(false); RequestEventArgs result = null; Process process; EventHandler<RequestEventArgs> logEventHandler = null; EventHandler<RequestEventArgs> handler = logEventHandler; logEventHandler = delegate(object sender, RequestEventArgs e) { if (e.RequestLog.Url.ToLower().Contains(_postKey)) { Server.RequestComplete -= handler; result = e; waitHandle.Set(); } }; try { var startInfo = new ProcessStartInfo(browser.ExecutablePath, url) { UseShellExecute = true, WindowStyle = ProcessWindowStyle.Minimized }; Server.RequestComplete += logEventHandler; process = Process.Start(startInfo); } catch (Exception ex) { Server.RequestComplete -= logEventHandler; return new RequestEventArgs(Guid.Empty, new LogInfo { StatusCode = -1, Exception = ex.ToString() }, new LogInfo()); } bool flag = waitHandle.WaitOne(timeout); try { if (!process.CloseMainWindow()) { process.Kill(); } } catch { } return flag ? result : new RequestEventArgs(Guid.Empty, new LogInfo { StatusCode = -2 }, new LogInfo()); }
public RequestEventArgs RunTest(string url, WebBrowser browser) { return RunTest(url, browser, TimeSpan.FromMinutes(1.0)); }