private static void _Instance_OnRequestUserInput(object sender, RequestUserInputArgs e) { Console.Write(e.Message); while (e.UserInput == null) { e.UserInput = Console.ReadLine(); } }
public void Start(string toAddress, bool showCancel = false) { var addressUtil = new AddressUtil(); if (!string.IsNullOrWhiteSpace(toAddress)) { if (toAddress.StartsWith("0x") && addressUtil.IsValidAddressLength(toAddress) && addressUtil.IsChecksumAddress(toAddress)) { _CancellationTokenSource = new CancellationTokenSource(); _Task = Task.Run(() => RunMeter(toAddress, _CancellationTokenSource.Token), _CancellationTokenSource.Token); return; } else { toAddress = null; OnMessage?.Invoke(this, new MessageArgs("Invalid user defined address.")); } } var query = new StringBuilder(); query.AppendLine("Select Token Contract:"); query.AppendLine("1: 0xBitcoin"); query.AppendLine("2: 0xCatEther"); query.AppendLine("3: KIWI Token"); query.AppendLine("4: 0xZibit"); query.AppendLine("or enter Contract Address (including '0x' prefix)"); if (showCancel) { query.AppendLine("Press Ctrl-C again to quit."); } var request = new RequestUserInputArgs(query.ToString()); while (string.IsNullOrWhiteSpace(toAddress)) { OnRequestUserInput?.Invoke(this, request); switch (request.UserInput) { case "1": case "0xBitcoin": toAddress = Contracts._0xBitcoin; break; case "2": case "0xCatEther": toAddress = Contracts._0xCatether; break; case "3": case "KIWI Token": toAddress = Contracts.KIWI_Token; break; case "4": case "0xZibit": toAddress = Contracts._0xZibit; break; default: if (request.UserInput == null) { break; } if (request.UserInput.StartsWith("0x") && addressUtil.IsValidAddressLength(request.UserInput) && addressUtil.IsChecksumAddress(request.UserInput)) { toAddress = request.UserInput; } else { OnMessage?.Invoke(this, new MessageArgs("Invalid address.")); request.UserInput = null; } break; } } _CancellationTokenSource = new CancellationTokenSource(); _Task = Task.Run(() => RunMeter(toAddress, _CancellationTokenSource.Token), _CancellationTokenSource.Token); }