ReadLine(int timeout, string @default) { using (var process = new System.Diagnostics.Process { StartInfo = { FileName = "ReadLine.exe", RedirectStandardOutput = true, UseShellExecute = false } }) { process.Start(); var rli = new ReadLineInvoker(process.StandardOutput.ReadLine); var iar = rli.BeginInvoke(null, null); if (!iar.AsyncWaitHandle.WaitOne(new System.TimeSpan(0, 0, timeout))) { process.Kill(); return(@default); } return(rli.EndInvoke(iar)); } }
ReadLine(int timeout, string @default) { var rli = new ReadLineInvoker(System.Console.ReadLine); var iar = rli.BeginInvoke(null, null); return(!iar.AsyncWaitHandle.WaitOne(new System.TimeSpan(0, 0, timeout)) ? @default : rli.EndInvoke(iar)); }
ReadLine(int timeout, string @default) { var rli = new ReadLineInvoker(ReadLine); var iar = rli.BeginInvoke(null, rli); var waitHandle = iar.AsyncWaitHandle; var timedOut = !waitHandle.WaitOne(new System.TimeSpan(0, 0, timeout)); return(timedOut ? @default : ((ReadLineInvoker)iar.AsyncState).EndInvoke(iar)); }