private static void HandleKeysFromEventPatternWithOperators() { using (var keyLogger = new EventedNativeKeyWatcher()) { var observable = Observable.FromEventPattern <K.KeyEventArgs>( keyLogger, nameof(EventedNativeKeyWatcher.KeyLogged)); var operationObservable = observable .Select(e => e.EventArgs.Key) .Buffer(Program.BufferCount, Program.BufferSkip) .Delay(TimeSpan.FromSeconds(2)); using (var subscription = observable.Subscribe( pattern => { Program.CheckForTermination(pattern.EventArgs.Key); })) { using (var operationSubscription = operationObservable.Subscribe( operationPattern => { Console.Out.WriteLine(operationPattern.ToArray()); })) { Application.Run(); } } } }
static void Main(string[] args) { using (var keyLogger = new EventedNativeKeyWatcher()) { keyLogger.KeyLogged += Program.OnKeyLogged; Application.Run(); } }
private static void PublishKeysAndListen() { Console.Out.WriteLine("Getting SignalR Connection..."); var connection = new HubConnection(Program.SignalRUrl); var proxy = connection.CreateHubProxy("KeyWatcherHub"); connection.Start().GetAwaiter().GetResult(); proxy.On <NotificationSentMessage>( "NotificationSent", message => { Console.Out.WriteLine($"On() - {message.User} - {message.BadWords}"); }); using (proxy .ObserveAs <NotificationSentMessage>("NotificationSent") .Where(message => message.BadWords.Contains("cotton")) .Take(3) .Delay(TimeSpan.FromSeconds(2)) .Subscribe(message => { Console.Out.WriteLine($"Subscribe() - {message.User} - {message.BadWords}"); })) { Console.Out.WriteLine("Begin..."); var userName = Program.GetUserName(); using (var keyLogger = new EventedNativeKeyWatcher()) { var observable = Observable.FromEventPattern <K.KeyEventArgs>( keyLogger, nameof(EventedNativeKeyWatcher.KeyLogged)) .Select(e => e.EventArgs.Key) .Buffer(Program.BufferCount, Program.BufferSkip); using (var subscription = observable.Subscribe( pattern => { var keys = pattern.ToArray(); var message = JsonConvert.SerializeObject( new UserKeysMessage(userName, keys), Formatting.Indented); var content = new StringContent(message, Encoding.Unicode, "application/json"); var postResponse = new HttpClient().PostAsync( Program.ApiUrl, content); postResponse.Wait(); foreach (var key in keys) { Program.CheckForTermination(key); } })) { Application.Run(); } } } }
#pragma warning restore IDE0022 // Use expression body for methods private static void HandleKeysViaEvents() { using (var keyLogger = new EventedNativeKeyWatcher()) { keyLogger.KeyLogged += (s, e) => { Console.Write(e.Key); Program.CheckForTermination(e.Key); }; Application.Run(); } }
private static void HandleKeysFromEventPattern() { using (var keyLogger = new EventedNativeKeyWatcher()) { var observable = Observable.FromEventPattern <K.KeyEventArgs>( keyLogger, nameof(EventedNativeKeyWatcher.KeyLogged)); using (var subscription = observable.Subscribe( pattern => { var key = pattern.EventArgs.Key; Console.Out.Write(key); Program.CheckForTermination(key); })) { Application.Run(); } } }