Esempio n. 1
0
        /// <summary>
        /// Starts functions.
        /// </summary>
        /// <param name="startupTaskId">Startup task ID</param>
        /// <param name="caller">Caller assembly</param>
        /// <remarks>Startup task ID must match that in AppxManifest.xml.</remarks>
        public bool Start(string startupTaskId, Assembly caller = null)
        {
            if (string.IsNullOrWhiteSpace(startupTaskId))
            {
                throw new ArgumentNullException(nameof(startupTaskId));
            }

            if (caller == null)
            {
                caller = Assembly.GetCallingAssembly();
            }

            var title = caller.GetTitle();

            _holder = new RemotingHolder();
            if (!_holder.Create(title))
            {
                return(false);
            }

            _worker = (OsVersion.Is10Redstone1OrNewer && PlatformInfo.IsPackaged)
                                ? (IStartupWorker) new BridgeWorker(taskId: startupTaskId)
                                : (IStartupWorker) new RegistryWorker(title: title, path: caller.Location);
            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// Starts.
        /// </summary>
        /// <param name="name">Name</param>
        /// <param name="startupTaskId">Startup task ID</param>
        /// <param name="args">Arguments to another instance</param>
        /// <returns>
        /// <para>success: True if no other instance exists and this instance successfully starts</para>
        /// <para>response: Response from another instance if that instance exists and returns an response</para>
        /// </returns>
        /// <remarks>Startup task ID must match that in AppxManifest.xml.</remarks>
        public (bool success, object response) Start(string name, string startupTaskId, IReadOnlyList <string> args)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (string.IsNullOrWhiteSpace(startupTaskId))
            {
                throw new ArgumentNullException(nameof(startupTaskId));
            }

            _holder = new RemotingHolder();
            var(success, response) = _holder.Create(name, args?.ToArray());
            if (!success)
            {
                return(success : false, response);
            }

            _worker = (OsVersion.Is10Redstone1OrNewer && IsPackaged)
                                ? (IStartupWorker) new BridgeWorker(taskId: startupTaskId)
                                : (IStartupWorker) new RegistryWorker(name: name, path: Assembly.GetEntryAssembly().Location);
            return(success : true, null);
        }