示例#1
0
        /// <summary>
        /// Creates a client channel and obtains a reference to the remoting service exposed by the server -
        /// in this case, the remoting service exposed by the first instance. Calls a function of the remoting service
        /// class to pass on command line arguments from the second instance to the first and cause it to activate itself.
        /// </summary>
        /// <param name="channelName">Application's IPC channel name.</param>
        /// <param name="args">
        /// Command line arguments for the second instance, passed to the first instance to take appropriate action.
        /// </param>
        private static void SignalFirstInstance(string channelName, IList <string> args)
        {
            IpcClientChannel secondInstanceChannel = new IpcClientChannel();

            ChannelServices.RegisterChannel(secondInstanceChannel, true);

            string remotingServiceUrl = IpcProtocol + channelName + "/" + RemoteServiceName;

            // Obtain a reference to the remoting service exposed by the server i.e the first instance of the application
            IPCRemoteService firstInstanceRemoteServiceReference = (IPCRemoteService)RemotingServices.Connect(typeof(IPCRemoteService), remotingServiceUrl);

            // Check that the remote service exists, in some cases the first instance may not yet have created one, in which case
            // the second instance should just exit
            if (firstInstanceRemoteServiceReference != null)
            {
                // Invoke a method of the remote service exposed by the first instance passing on the command line
                // arguments and causing the first instance to activate itself
                try
                {
                    firstInstanceRemoteServiceReference.InvokeFirstInstance(args);
                }
                catch (Exception)
                {
                    // ignored
                }
            }
        }
示例#2
0
        private static void SignalFirstInstance(string channelName, IList <string> args)
        {
            IpcClientChannel secondInstanceChannel = new IpcClientChannel();

            ChannelServices.RegisterChannel(secondInstanceChannel, true);

            string remotingServiceUrl = IpcProtocol + channelName + "/" + RemoteServiceName;

            IPCRemoteService firstInstanceRemoteServiceReference = (IPCRemoteService)RemotingServices.Connect(typeof(IPCRemoteService), remotingServiceUrl);

            firstInstanceRemoteServiceReference?.InvokeFirstInstance(args);
        }
示例#3
0
        private static void SignalFirstInstance(string channelName, IList <string> args)
        {
            IpcClientChannel chnl = new IpcClientChannel();

            ChannelServices.RegisterChannel(chnl, true);
            string           url     = "ipc://" + channelName + "/SingleInstanceApplicationService";
            IPCRemoteService service = (IPCRemoteService)RemotingServices.Connect(typeof(IPCRemoteService), url);

            if (service != null)
            {
                service.InvokeFirstInstance(args);
            }
        }