diff --git a/ElectronNET.API/App.cs b/ElectronNET.API/App.cs
index 68463e3..7a66589 100644
--- a/ElectronNET.API/App.cs
+++ b/ElectronNET.API/App.cs
@@ -464,40 +464,49 @@ namespace ElectronNET.API
/// The current application directory.
///
///
- public async Task GetAppPathAsync()
+ public async Task GetAppPathAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetAppPathCompleted", (path) =>
+ using(cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetAppPathCompleted");
- taskCompletionSource.SetResult(path.ToString());
- });
+ BridgeConnector.Socket.On("appGetAppPathCompleted", (path) =>
+ {
+ BridgeConnector.Socket.Off("appGetAppPathCompleted");
+ taskCompletionSource.SetResult(path.ToString());
+ });
- BridgeConnector.Socket.Emit("appGetAppPath");
+ BridgeConnector.Socket.Emit("appGetAppPath");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
/// You can request the following paths by the name.
///
- ///
/// A path to a special directory or file associated with name.
- public async Task GetPathAsync(PathName pathName)
+ public async Task GetPathAsync(PathName pathName, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
+ using(cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
+ {
+ BridgeConnector.Socket.On("appGetPathCompleted", (path) =>
+ {
+ BridgeConnector.Socket.Off("appGetPathCompleted");
- BridgeConnector.Socket.On("appGetPathCompleted", (path) =>
- {
- BridgeConnector.Socket.Off("appGetPathCompleted");
+ taskCompletionSource.SetResult(path.ToString());
+ });
- taskCompletionSource.SetResult(path.ToString());
- });
+ BridgeConnector.Socket.Emit("appGetPath", pathName.ToString());
- BridgeConnector.Socket.Emit("appGetPath", pathName.ToString());
-
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
@@ -522,19 +531,24 @@ namespace ElectronNET.API
/// the version of the current bundle or executable is returned.
///
///
- public async Task GetVersionAsync()
+ public async Task GetVersionAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetVersionCompleted", (version) =>
+ using(cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetVersionCompleted");
- taskCompletionSource.SetResult(version.ToString());
- });
+ BridgeConnector.Socket.On("appGetVersionCompleted", (version) =>
+ {
+ BridgeConnector.Socket.Off("appGetVersionCompleted");
+ taskCompletionSource.SetResult(version.ToString());
+ });
- BridgeConnector.Socket.Emit("appGetVersion");
+ BridgeConnector.Socket.Emit("appGetVersion");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -544,19 +558,24 @@ namespace ElectronNET.API
/// name by Electron.
///
/// The current application’s name, which is the name in the application’s package.json file.
- public async Task GetNameAsync()
+ public async Task GetNameAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetNameCompleted", (name) =>
+ using(cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetNameCompleted");
- taskCompletionSource.SetResult(name.ToString());
- });
+ BridgeConnector.Socket.On("appGetNameCompleted", (name) =>
+ {
+ BridgeConnector.Socket.Off("appGetNameCompleted");
+ taskCompletionSource.SetResult(name.ToString());
+ });
- BridgeConnector.Socket.Emit("appGetName");
+ BridgeConnector.Socket.Emit("appGetName");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -574,19 +593,24 @@ namespace ElectronNET.API
/// folder.Note: On Windows you have to call it after the ready events gets emitted.
///
///
- public async Task GetLocaleAsync()
+ public async Task GetLocaleAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetLocaleCompleted", (locale) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetLocaleCompleted");
- taskCompletionSource.SetResult(locale.ToString());
- });
+ BridgeConnector.Socket.On("appGetLocaleCompleted", (local) =>
+ {
+ BridgeConnector.Socket.Off("appGetLocaleCompleted");
+ taskCompletionSource.SetResult(local.ToString());
+ });
- BridgeConnector.Socket.Emit("appGetLocale");
+ BridgeConnector.Socket.Emit("appGetLocale");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -625,20 +649,26 @@ namespace ElectronNET.API
/// The name of your protocol, without ://.
/// If you want your app to handle electron:// links,
/// call this method with electron as the parameter.
+ /// The cancellation token.
/// Whether the call succeeded.
- public async Task SetAsDefaultProtocolClientAsync(string protocol)
+ public async Task SetAsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appSetAsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appSetAsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appSetAsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appSetAsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appSetAsDefaultProtocolClient", protocol);
+ BridgeConnector.Socket.Emit("appSetAsDefaultProtocolClient", protocol);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -659,20 +689,26 @@ namespace ElectronNET.API
/// If you want your app to handle electron:// links,
/// call this method with electron as the parameter.
/// Defaults to process.execPath
+ /// The cancellation token.
/// Whether the call succeeded.
- public async Task SetAsDefaultProtocolClientAsync(string protocol, string path)
+ public async Task SetAsDefaultProtocolClientAsync(string protocol, string path, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appSetAsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appSetAsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appSetAsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appSetAsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appSetAsDefaultProtocolClient", protocol, path);
+ BridgeConnector.Socket.Emit("appSetAsDefaultProtocolClient", protocol, path);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -694,20 +730,26 @@ namespace ElectronNET.API
/// call this method with electron as the parameter.
/// Defaults to process.execPath
/// Defaults to an empty array
+ /// The cancellation token.
/// Whether the call succeeded.
- public async Task SetAsDefaultProtocolClientAsync(string protocol, string path, string[] args)
+ public async Task SetAsDefaultProtocolClientAsync(string protocol, string path, string[] args, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appSetAsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appSetAsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appSetAsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appSetAsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appSetAsDefaultProtocolClient", protocol, path, args);
+ BridgeConnector.Socket.Emit("appSetAsDefaultProtocolClient", protocol, path, args);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -715,20 +757,26 @@ namespace ElectronNET.API
/// protocol(aka URI scheme). If so, it will remove the app as the default handler.
///
/// The name of your protocol, without ://.
+ /// The cancellation token.
/// Whether the call succeeded.
- public async Task RemoveAsDefaultProtocolClientAsync(string protocol)
+ public async Task RemoveAsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appRemoveAsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appRemoveAsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appRemoveAsDefaultProtocolClient", protocol);
+ BridgeConnector.Socket.Emit("appRemoveAsDefaultProtocolClient", protocol);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -737,20 +785,26 @@ namespace ElectronNET.API
///
/// The name of your protocol, without ://.
/// Defaults to process.execPath.
+ /// The cancellation token.
/// Whether the call succeeded.
- public async Task RemoveAsDefaultProtocolClientAsync(string protocol, string path)
+ public async Task RemoveAsDefaultProtocolClientAsync(string protocol, string path, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appRemoveAsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appRemoveAsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appRemoveAsDefaultProtocolClient", protocol, path);
+ BridgeConnector.Socket.Emit("appRemoveAsDefaultProtocolClient", protocol, path);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -760,20 +814,26 @@ namespace ElectronNET.API
/// The name of your protocol, without ://.
/// Defaults to process.execPath.
/// Defaults to an empty array.
+ /// The cancellation token.
/// Whether the call succeeded.
- public async Task RemoveAsDefaultProtocolClientAsync(string protocol, string path, string[] args)
- {
+ public async Task RemoveAsDefaultProtocolClientAsync(string protocol, string path, string[] args, CancellationToken cancellationToken = default(CancellationToken))
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appRemoveAsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appRemoveAsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appRemoveAsDefaultProtocolClient", protocol, path, args);
+ BridgeConnector.Socket.Emit("appRemoveAsDefaultProtocolClient", protocol, path, args);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -786,20 +846,26 @@ namespace ElectronNET.API
/// the Windows Registry and LSCopyDefaultHandlerForURLScheme internally.
///
/// The name of your protocol, without ://.
+ /// The cancellation token.
/// Returns Boolean
- public async Task IsDefaultProtocolClientAsync(string protocol)
+ public async Task IsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appIsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appIsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appIsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appIsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appIsDefaultProtocolClient", protocol);
+ BridgeConnector.Socket.Emit("appIsDefaultProtocolClient", protocol);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -813,20 +879,26 @@ namespace ElectronNET.API
///
/// The name of your protocol, without ://.
/// Defaults to process.execPath.
+ /// The cancellation token.
/// Returns Boolean
- public async Task IsDefaultProtocolClientAsync(string protocol, string path)
+ public async Task IsDefaultProtocolClientAsync(string protocol, string path, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appIsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appIsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appIsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appIsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appIsDefaultProtocolClient", protocol, path);
+ BridgeConnector.Socket.Emit("appIsDefaultProtocolClient", protocol, path);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -841,20 +913,26 @@ namespace ElectronNET.API
/// The name of your protocol, without ://.
/// Defaults to process.execPath.
/// Defaults to an empty array.
+ /// The cancellation token.
/// Returns Boolean
- public async Task IsDefaultProtocolClientAsync(string protocol, string path, string[] args)
+ public async Task IsDefaultProtocolClientAsync(string protocol, string path, string[] args, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appIsDefaultProtocolClientCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appIsDefaultProtocolClientCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appIsDefaultProtocolClientCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appIsDefaultProtocolClientCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appIsDefaultProtocolClient", protocol, path, args);
+ BridgeConnector.Socket.Emit("appIsDefaultProtocolClient", protocol, path, args);
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -863,39 +941,50 @@ namespace ElectronNET.API
/// app.setJumpList(categories) instead.
///
/// Array of Task objects.
+ /// The cancellation token.
/// Whether the call succeeded.
- public async Task SetUserTasksAsync(UserTask[] userTasks)
+ public async Task SetUserTasksAsync(UserTask[] userTasks, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appSetUserTasksCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appSetUserTasksCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appSetUserTasksCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appSetUserTasksCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appSetUserTasks", JObject.FromObject(userTasks, _jsonSerializer));
+ BridgeConnector.Socket.Emit("appSetUserTasks", JObject.FromObject(userTasks, _jsonSerializer));
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
/// Jump List settings for the application.
///
///
- public async Task GetJumpListSettingsAsync()
+ public async Task GetJumpListSettingsAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetJumpListSettingsCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetJumpListSettingsCompleted");
- taskCompletionSource.SetResult(JObject.Parse(success.ToString()).ToObject());
- });
+ BridgeConnector.Socket.On("appGetJumpListSettingsCompleted", (jumplistSettings) =>
+ {
+ BridgeConnector.Socket.Off("appGetJumpListSettingsCompleted");
+ taskCompletionSource.SetResult(JObject.Parse(jumplistSettings.ToString()).ToObject());
+ });
- BridgeConnector.Socket.Emit("appGetJumpListSettings");
+ BridgeConnector.Socket.Emit("appGetJumpListSettings");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -939,32 +1028,38 @@ namespace ElectronNET.API
///
/// Lambda with an array of the second instance’s command line arguments.
/// The second parameter is the working directory path.
+ /// The cancellation token.
/// This method returns false if your process is the primary instance of
/// the application and your app should continue loading. And returns true if your
/// process has sent its parameters to another instance, and you should immediately quit.
- public async Task MakeSingleInstanceAsync(Action newInstanceOpened)
+ public async Task MakeSingleInstanceAsync(Action newInstanceOpened, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appMakeSingleInstanceCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appMakeSingleInstanceCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appMakeSingleInstanceCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appMakeSingleInstanceCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Off("newInstanceOpened");
- BridgeConnector.Socket.On("newInstanceOpened", (result) =>
- {
- JArray results = (JArray)result;
- string[] args = results.First.ToObject();
- string workdirectory = results.Last.ToObject();
+ BridgeConnector.Socket.Off("newInstanceOpened");
+ BridgeConnector.Socket.On("newInstanceOpened", (result) =>
+ {
+ JArray results = (JArray)result;
+ string[] args = results.First.ToObject();
+ string workdirectory = results.Last.ToObject();
- newInstanceOpened(args, workdirectory);
- });
+ newInstanceOpened(args, workdirectory);
+ });
- BridgeConnector.Socket.Emit("appMakeSingleInstance");
+ BridgeConnector.Socket.Emit("appMakeSingleInstance");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1003,19 +1098,24 @@ namespace ElectronNET.API
/// The type of the currently running activity.
///
///
- public async Task GetCurrentActivityTypeAsync()
+ public async Task GetCurrentActivityTypeAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetCurrentActivityTypeCompleted", (activityType) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetCurrentActivityTypeCompleted");
- taskCompletionSource.SetResult(activityType.ToString());
- });
+ BridgeConnector.Socket.On("appGetCurrentActivityTypeCompleted", (activityType) =>
+ {
+ BridgeConnector.Socket.Off("appGetCurrentActivityTypeCompleted");
+ taskCompletionSource.SetResult(activityType.ToString());
+ });
- BridgeConnector.Socket.Emit("appGetCurrentActivityType");
+ BridgeConnector.Socket.Emit("appGetCurrentActivityType");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1033,62 +1133,78 @@ namespace ElectronNET.API
/// success while any other value indicates failure according to chromium net_error_list.
///
///
+ /// The cancellation token.
/// Result of import. Value of 0 indicates success.
- public async Task ImportCertificateAsync(ImportCertificateOptions options)
+ public async Task ImportCertificateAsync(ImportCertificateOptions options, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appImportCertificateCompleted", (result) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appImportCertificateCompleted");
- taskCompletionSource.SetResult((int)result);
- });
+ BridgeConnector.Socket.On("appImportCertificateCompleted", (result) =>
+ {
+ BridgeConnector.Socket.Off("appImportCertificateCompleted");
+ taskCompletionSource.SetResult((int)result);
+ });
- BridgeConnector.Socket.Emit("appImportCertificate", JObject.FromObject(options, _jsonSerializer));
+ BridgeConnector.Socket.Emit("appImportCertificate", JObject.FromObject(options, _jsonSerializer));
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
/// Memory and cpu usage statistics of all the processes associated with the app.
///
///
- public async Task GetAppMetricsAsync()
+ public async Task GetAppMetricsAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetAppMetricsCompleted", (result) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetAppMetricsCompleted");
- var processMetrics = ((JArray)result).ToObject();
+ BridgeConnector.Socket.On("appGetAppMetricsCompleted", (result) =>
+ {
+ BridgeConnector.Socket.Off("appGetAppMetricsCompleted");
+ var processMetrics = ((JArray)result).ToObject();
- taskCompletionSource.SetResult(processMetrics);
- });
+ taskCompletionSource.SetResult(processMetrics);
+ });
- BridgeConnector.Socket.Emit("appGetAppMetrics");
+ BridgeConnector.Socket.Emit("appGetAppMetrics");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
/// The Graphics Feature Status from chrome://gpu/.
///
///
- public async Task GetGpuFeatureStatusAsync()
+ public async Task GetGpuFeatureStatusAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetGpuFeatureStatusCompleted", (result) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetGpuFeatureStatusCompleted");
- var gpuFeatureStatus = ((JObject)result).ToObject();
+ BridgeConnector.Socket.On("appGetGpuFeatureStatusCompleted", (result) =>
+ {
+ BridgeConnector.Socket.Off("appGetGpuFeatureStatusCompleted");
+ var gpuFeatureStatus = ((JObject)result).ToObject();
- taskCompletionSource.SetResult(gpuFeatureStatus);
- });
+ taskCompletionSource.SetResult(gpuFeatureStatus);
+ });
- BridgeConnector.Socket.Emit("appGetGpuFeatureStatus");
+ BridgeConnector.Socket.Emit("appGetGpuFeatureStatus");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1099,57 +1215,72 @@ namespace ElectronNET.API
///
///
/// Whether the call succeeded.
- public async Task SetBadgeCountAsync(int count)
+ public async Task SetBadgeCountAsync(int count, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appSetBadgeCountCompleted", (success) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appSetBadgeCountCompleted");
- taskCompletionSource.SetResult((bool)success);
- });
+ BridgeConnector.Socket.On("appSetBadgeCountCompleted", (success) =>
+ {
+ BridgeConnector.Socket.Off("appSetBadgeCountCompleted");
+ taskCompletionSource.SetResult((bool)success);
+ });
- BridgeConnector.Socket.Emit("appSetBadgeCount", count);
+ BridgeConnector.Socket.Emit("appSetBadgeCount");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
/// The current value displayed in the counter badge.
///
///
- public async Task GetBadgeCountAsync()
+ public async Task GetBadgeCountAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetBadgeCountCompleted", (count) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetBadgeCountCompleted");
- taskCompletionSource.SetResult((int)count);
- });
+ BridgeConnector.Socket.On("appGetBadgeCountCompleted", (count) =>
+ {
+ BridgeConnector.Socket.Off("appGetBadgeCountCompleted");
+ taskCompletionSource.SetResult((int)count);
+ });
- BridgeConnector.Socket.Emit("appGetBadgeCount");
+ BridgeConnector.Socket.Emit("appGetBadgeCount");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
/// Whether the current desktop environment is Unity launcher.
///
///
- public async Task IsUnityRunningAsync()
+ public async Task IsUnityRunningAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appIsUnityRunningCompleted", (isUnityRunning) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appIsUnityRunningCompleted");
- taskCompletionSource.SetResult((bool)isUnityRunning);
- });
+ BridgeConnector.Socket.On("appIsUnityRunningCompleted", (isUnityRunning) =>
+ {
+ BridgeConnector.Socket.Off("appIsUnityRunningCompleted");
+ taskCompletionSource.SetResult((bool)isUnityRunning);
+ });
- BridgeConnector.Socket.Emit("appIsUnityRunning");
+ BridgeConnector.Socket.Emit("appIsUnityRunning");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1158,19 +1289,24 @@ namespace ElectronNET.API
/// API has no effect on MAS builds.
///
///
- public async Task GetLoginItemSettingsAsync()
+ public async Task GetLoginItemSettingsAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetLoginItemSettingsCompleted", (loginItemSettings) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetLoginItemSettingsCompleted");
- taskCompletionSource.SetResult((LoginItemSettings)loginItemSettings);
- });
+ BridgeConnector.Socket.On("appGetLoginItemSettingsCompleted", (loginItemSettings) =>
+ {
+ BridgeConnector.Socket.Off("appGetLoginItemSettingsCompleted");
+ taskCompletionSource.SetResult((LoginItemSettings)loginItemSettings);
+ });
- BridgeConnector.Socket.Emit("appGetLoginItemSettings");
+ BridgeConnector.Socket.Emit("appGetLoginItemSettings");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1179,20 +1315,26 @@ namespace ElectronNET.API
/// API has no effect on MAS builds.
///
///
+ /// The cancellation token.
///
- public async Task GetLoginItemSettingsAsync(LoginItemSettingsOptions options)
+ public async Task GetLoginItemSettingsAsync(LoginItemSettingsOptions options, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appGetLoginItemSettingsCompleted", (loginItemSettings) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appGetLoginItemSettingsCompleted");
- taskCompletionSource.SetResult((LoginItemSettings)loginItemSettings);
- });
+ BridgeConnector.Socket.On("appGetLoginItemSettingsCompleted", (loginItemSettings) =>
+ {
+ BridgeConnector.Socket.Off("appGetLoginItemSettingsCompleted");
+ taskCompletionSource.SetResult((LoginItemSettings)loginItemSettings);
+ });
- BridgeConnector.Socket.Emit("appGetLoginItemSettings", JObject.FromObject(options, _jsonSerializer));
+ BridgeConnector.Socket.Emit("appGetLoginItemSettings", JObject.FromObject(options, _jsonSerializer));
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1212,19 +1354,24 @@ namespace ElectronNET.API
/// See https://www.chromium.org/developers/design-documents/accessibility for more details.
///
/// true if Chrome’s accessibility support is enabled, false otherwise.
- public async Task IsAccessibilitySupportEnabledAsync()
+ public async Task IsAccessibilitySupportEnabledAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appIsAccessibilitySupportEnabledCompleted", (isAccessibilitySupportEnabled) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appIsAccessibilitySupportEnabledCompleted");
- taskCompletionSource.SetResult((bool)isAccessibilitySupportEnabled);
- });
+ BridgeConnector.Socket.On("appIsAccessibilitySupportEnabledCompleted", (isAccessibilitySupportEnabled) =>
+ {
+ BridgeConnector.Socket.Off("appIsAccessibilitySupportEnabledCompleted");
+ taskCompletionSource.SetResult((bool)isAccessibilitySupportEnabled);
+ });
- BridgeConnector.Socket.Emit("appIsAccessibilitySupportEnabled");
+ BridgeConnector.Socket.Emit("appIsAccessibilitySupportEnabled");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1285,20 +1432,26 @@ namespace ElectronNET.API
/// either the application becomes active or the request is canceled.
///
///
+ ///
///
- public async Task DockBounceAsync(DockBounceType type)
+ public async Task DockBounceAsync(DockBounceType type, CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appDockBounceCompleted", (id) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appDockBounceCompleted");
- taskCompletionSource.SetResult((int)id);
- });
+ BridgeConnector.Socket.On("appDockBounceCompleted", (id) =>
+ {
+ BridgeConnector.Socket.Off("appDockBounceCompleted");
+ taskCompletionSource.SetResult((int)id);
+ });
- BridgeConnector.Socket.Emit("appDockBounce", type.ToString());
+ BridgeConnector.Socket.Emit("appDockBounce", type.ToString());
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1332,19 +1485,24 @@ namespace ElectronNET.API
/// Gets the string to be displayed in the dock’s badging area.
///
///
- public async Task DockGetBadgeAsync()
+ public async Task DockGetBadgeAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appDockGetBadgeCompleted", (text) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appDockGetBadgeCompleted");
- taskCompletionSource.SetResult((string)text);
- });
+ BridgeConnector.Socket.On("appDockGetBadgeCompleted", (text) =>
+ {
+ BridgeConnector.Socket.Off("appDockGetBadgeCompleted");
+ taskCompletionSource.SetResult((string)text);
+ });
- BridgeConnector.Socket.Emit("appDockGetBadge");
+ BridgeConnector.Socket.Emit("appDockGetBadge");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
///
@@ -1368,19 +1526,24 @@ namespace ElectronNET.API
/// so this method might not return true immediately after that call.
///
///
- public async Task DockIsVisibleAsync()
+ public async Task DockIsVisibleAsync(CancellationToken cancellationToken = default(CancellationToken))
{
+ cancellationToken.ThrowIfCancellationRequested();
+
var taskCompletionSource = new TaskCompletionSource();
-
- BridgeConnector.Socket.On("appDockIsVisibleCompleted", (isVisible) =>
+ using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
- BridgeConnector.Socket.Off("appDockIsVisibleCompleted");
- taskCompletionSource.SetResult((bool)isVisible);
- });
+ BridgeConnector.Socket.On("appDockIsVisibleCompleted", (isVisible) =>
+ {
+ BridgeConnector.Socket.Off("appDockIsVisibleCompleted");
+ taskCompletionSource.SetResult((bool)isVisible);
+ });
- BridgeConnector.Socket.Emit("appDockIsVisible");
+ BridgeConnector.Socket.Emit("appDockIsVisible");
- return await taskCompletionSource.Task;
+ return await taskCompletionSource.Task
+ .ConfigureAwait(false);
+ }
}
// TODO: Menu lösung für macOS muss gemacht werden und imeplementiert