internal void CreateSession()
		{
			Uri serviceAddress = new Uri("net.pipe://localhost/Multitouch.Service/ApplicationInterface");
			EndpointAddress remoteAddress = new EndpointAddress(serviceAddress);
			NetNamedPipeBinding namedPipeBinding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
			namedPipeBinding.MaxReceivedMessageSize = int.MaxValue;
			namedPipeBinding.MaxBufferSize = int.MaxValue;
			namedPipeBinding.ReaderQuotas.MaxArrayLength = int.MaxValue;
			namedPipeBinding.ReceiveTimeout = TimeSpan.MaxValue;

			IApplicationInterfaceCallback dispatcher = new MultitouchServiceContactDispatcher(logic);
			InstanceContext instanceContext = new InstanceContext(dispatcher);
			service = new ApplicationInterfaceClient(instanceContext, namedPipeBinding, remoteAddress);

			try
			{
				service.CreateSession();
				MouseHelper.SingleMouseFallback = false;
			}
			catch (EndpointNotFoundException)
			{
				//throw new MultitouchException("Could not connect to Multitouch service, please start Multitouch input server before running this application.", e);
				Trace.TraceWarning("Could not connect to Multitouch service. Enabling single mouse input.");
				SingleMouseClientAndDispatcher client = new SingleMouseClientAndDispatcher(logic);
				service = client;
				dispatcher = client;
				MouseHelper.SingleMouseFallback = true;
			}
			contactDispatcher = dispatcher;
		}
        internal void CreateSession()
        {
            Uri                 serviceAddress   = new Uri("net.pipe://localhost/Multitouch.Service/ApplicationInterface");
            EndpointAddress     remoteAddress    = new EndpointAddress(serviceAddress);
            NetNamedPipeBinding namedPipeBinding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);

            namedPipeBinding.MaxReceivedMessageSize      = int.MaxValue;
            namedPipeBinding.MaxBufferSize               = int.MaxValue;
            namedPipeBinding.ReaderQuotas.MaxArrayLength = int.MaxValue;
            namedPipeBinding.ReceiveTimeout              = TimeSpan.MaxValue;

            IApplicationInterfaceCallback dispatcher = new MultitouchServiceContactDispatcher(logic);
            InstanceContext instanceContext          = new InstanceContext(dispatcher);

            service = new ApplicationInterfaceClient(instanceContext, namedPipeBinding, remoteAddress);

            try
            {
                service.CreateSession();
                MouseHelper.SingleMouseFallback = false;
            }
            catch (EndpointNotFoundException)
            {
                //throw new MultitouchException("Could not connect to Multitouch service, please start Multitouch input server before running this application.", e);
                Trace.TraceWarning("Could not connect to Multitouch service. Enabling single mouse input.");
                SingleMouseClientAndDispatcher client = new SingleMouseClientAndDispatcher(logic);
                service    = client;
                dispatcher = client;
                MouseHelper.SingleMouseFallback = true;
            }
            contactDispatcher = dispatcher;
        }