private void Cleanup() { if (IsConnected) { Win32.ShowSystemCursor(); } else if (mouseHandler != null) { mouseHandler.Dispose(); mouseHandler = null; } disposed = true; if (serviceClient != null) { if (IsConnected) { serviceClient.UnregisterApplication(); } if (serviceClient.State == CommunicationState.Opened) { serviceClient.Close(); } serviceClient = null; } }
private void ConnectToMultitouchService() { Uri uri = new Uri("net.pipe://localhost/Danilins.Multitouch.Logic.Service/MultitouchService"); EndpointAddress remoteAddress = new EndpointAddress(uri); NetNamedPipeBinding namedPipeBinding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None); callbackHandler = new MultitouchServiceCallbackHandler(this); InstanceContext context = new InstanceContext(callbackHandler); serviceClient = new MultitouchServiceClient(context, namedPipeBinding, remoteAddress); try { serviceClient.RegisterApplication(); isConnected = true; } catch (EndpointNotFoundException) { Trace.TraceWarning("Can't connect to Multitouch service. Falling back to single mouse input."); EnableSystemMouseInput(); } }