コード例 #1
0
        /// <summary>
        /// The async method will resolve when the page has finished loading,
        /// and rejects if the page fails to load.
        ///
        /// A noop rejection handler is already attached, which avoids unhandled rejection
        /// errors.
        ///
        /// Loads the `url` in the window. The `url` must contain the protocol prefix, e.g.
        /// the `http://` or `file://`. If the load should bypass http cache then use the
        /// `pragma` header to achieve it.
        /// </summary>
        /// <param name="url"></param>
        /// <param name="options"></param>
        public Task LoadURLAsync(string url, LoadURLOptions options)
        {
            var taskCompletionSource = new TaskCompletionSource <object>();

            BridgeConnector.Socket.On("webContents-loadURL-complete" + Id, () =>
            {
                BridgeConnector.Socket.Off("webContents-loadURL-complete" + Id);
                BridgeConnector.Socket.Off("webContents-loadURL-error" + Id);
                taskCompletionSource.SetResult(null);
            });

            BridgeConnector.Socket.On("webContents-loadURL-error" + Id, (error) =>
            {
                BridgeConnector.Socket.Off("webContents-loadURL-error" + Id);
                taskCompletionSource.SetException(new InvalidOperationException(error.ToString()));
            });

            BridgeConnector.Socket.Emit("webContents-loadURL", Id, url, JObject.FromObject(options, _jsonSerializer));

            return(taskCompletionSource.Task);
        }
コード例 #2
0
        /// <summary>
        /// The async method will resolve when the page has finished loading,
        /// and rejects if the page fails to load.
        ///
        /// A noop rejection handler is already attached, which avoids unhandled rejection
        /// errors.
        ///
        /// Loads the `url` in the window. The `url` must contain the protocol prefix, e.g.
        /// the `http://` or `file://`. If the load should bypass http cache then use the
        /// `pragma` header to achieve it.
        /// </summary>
        /// <param name="url"></param>
        /// <param name="options"></param>
        public Task LoadURLAsync(string url, LoadURLOptions options)
        {
            var taskCompletionSource = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);

            BridgeConnector.On("webContents-loadURL-complete" + Id, () =>
            {
                BridgeConnector.Off("webContents-loadURL-complete" + Id);
                BridgeConnector.Off("webContents-loadURL-error" + Id);
                taskCompletionSource.SetResult();
            });

            BridgeConnector.On <string>("webContents-loadURL-error" + Id, (error) =>
            {
                BridgeConnector.Off("webContents-loadURL-error" + Id);
                BridgeConnector.Off("webContents-loadURL-complete" + Id);
                taskCompletionSource.SetException(new InvalidOperationException(error.ToString()));
            });

            BridgeConnector.Emit("webContents-loadURL", Id, url, options);

            return(taskCompletionSource.Task);
        }