diff --git a/ElectronNET.API/WindowManager.cs b/ElectronNET.API/WindowManager.cs
index a58764e..9344cc7 100644
--- a/ElectronNET.API/WindowManager.cs
+++ b/ElectronNET.API/WindowManager.cs
@@ -3,6 +3,7 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Serialization;
using System;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
@@ -62,8 +63,9 @@ namespace ElectronNET.API
///
/// The browser windows.
///
- public IReadOnlyCollection BrowserWindows { get { return _browserWindows.AsReadOnly(); } }
- private List _browserWindows = new List();
+ public IReadOnlyCollection BrowserWindows { get { return _browserWindows.Values.ToList().AsReadOnly(); } }
+
+ private ConcurrentDictionary _browserWindows = new ();
///
/// Gets the browser views.
@@ -71,8 +73,8 @@ namespace ElectronNET.API
///
/// The browser view.
///
- public IReadOnlyCollection BrowserViews { get { return _browserViews.AsReadOnly(); } }
- private List _browserViews = new List();
+ public IReadOnlyCollection BrowserViews { get { return _browserViews.Values.ToList().AsReadOnly(); } }
+ private ConcurrentDictionary _browserViews = new ();
///
/// Creates the window asynchronous.
@@ -98,8 +100,9 @@ namespace ElectronNET.API
{
BridgeConnector.Off("BrowserWindowCreated");
- BrowserWindow browserWindow = new BrowserWindow(id);
- _browserWindows.Add(browserWindow);
+ var browserWindow = new BrowserWindow(id);
+
+ _browserWindows[id] = browserWindow;
taskCompletionSource.SetResult(browserWindow);
});
@@ -107,12 +110,9 @@ namespace ElectronNET.API
BridgeConnector.Off("BrowserWindowClosed");
BridgeConnector.On("BrowserWindowClosed", (browserWindowIds) =>
{
- for (int index = 0; index < _browserWindows.Count; index++)
+ foreach(var id in browserWindowIds)
{
- if (!browserWindowIds.Contains(_browserWindows[index].Id))
- {
- _browserWindows.RemoveAt(index);
- }
+ _browserWindows.TryRemove(id, out _);
}
});
@@ -184,18 +184,12 @@ namespace ElectronNET.API
BrowserView browserView = new BrowserView(id);
- _browserViews.Add(browserView);
+ _browserViews[id] = browserView;
taskCompletionSource.SetResult(browserView);
});
- var keepDefaultValuesSerializer = new JsonSerializer()
- {
- ContractResolver = new CamelCasePropertyNamesContractResolver(),
- NullValueHandling = NullValueHandling.Ignore,
- DefaultValueHandling = DefaultValueHandling.Include
- };
- BridgeConnector.Emit("createBrowserView", JObject.FromObject(options, keepDefaultValuesSerializer));
+ BridgeConnector.Emit("createBrowserView", JObject.FromObject(options, _keepDefaultValuesSerializer));
return taskCompletionSource.Task;
}