public static Task <string> GetSystemToken() { var token = Environment.GetEnvironmentVariable("SYSTEMTOKEN"); if (!string.IsNullOrEmpty(token)) { return(Extensions.TaskExtensions.FromResult(token)); } var tcs = new TaskCompletionSource <string>(); Task.Factory.StartNew(() => { try { token = GetToken(); if (!string.IsNullOrEmpty(token)) { tcs.SetResult(token); return; } var task = ProcessEx.Exec(@"dmidecode.exe", "-s system-uuid", 1000); Task.WaitAll(task); var result = task.Result.Trim(); if (string.IsNullOrEmpty(result)) { result = Guid.NewGuid().ToString().ToUpper(); } if (!string.IsNullOrEmpty(result)) { SaveToken(result); } tcs.SetResult(result); } catch (Exception e) { tcs.SetException(e); } }); return(tcs.Task); }
private static void SpeedTest() { Console.WriteLine("\r\nRunning 3 processes, 3 threads in each process, each thread writing 100,000 messages to LoggerDemo.log\r\n"); timerStart = Environment.TickCount; var sb = new StringBuilder(); var p1 = ProcessEx.Exec(Process.GetCurrentProcess().MainModule.FileName, "SPEEDTEST", null, sb); var p2 = ProcessEx.Exec(Process.GetCurrentProcess().MainModule.FileName, "SPEEDTEST", null, sb); var p3 = ProcessEx.Exec(Process.GetCurrentProcess().MainModule.FileName, "SPEEDTEST", null, sb); p1.WaitForExit(); p2.WaitForExit(); p3.WaitForExit(); p1.Dispose(); p2.Dispose(); p3.Dispose(); Console.WriteLine(sb.ToString()); Console.WriteLine("Grand Total Duration={0:0.000} seconds", (Environment.TickCount - timerStart) / 1000.0); }
public async Task ProcessExExec() { var result = await ProcessEx.Exec(@"dmidecode.exe", "-s system-uuid"); Assert.AreNotEqual(result.Trim(), string.Empty); }