Bläddra i källkod

Added code to cancel the extra client connection tasks

Kenric Nugteren 1 år sedan
förälder
incheckning
3b4f8607fb

+ 16 - 3
InABox.Client.RPC/Transports/Socket/RPCClientSocketTransport.cs

@@ -4,6 +4,7 @@ using System.IO;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
+using Expressive;
 using InABox.Clients;
 using InABox.Core;
 using WebSocket4Net;
@@ -130,10 +131,19 @@ namespace InABox.Rpc
                 client.DataReceived += Client_DataReceived;
                 client.Open();
 
-                openEvent.Wait(ct);
+                try
+                {
+                    openEvent.Wait(ct);
+                }
+                catch (TaskCanceledException)
+                {
+                    client.Dispose();
+                    return null;
+                }
 
                 if (!open)
                 {
+                    client.Dispose();
                     return null;
                 }
 
@@ -220,11 +230,13 @@ namespace InABox.Rpc
             }
             else
             {
+                var childCts = CancellationTokenSource.CreateLinkedTokenSource(ct);
+
                 var tasks = new List<Task<WebSocket?>>();
                 foreach (var url in _urls)
                 {
-                    tasks.Add(Task.Run(() => CreateSocket(url, true, ct)));
-                    tasks.Add(Task.Run(() => CreateSocket(url, false, ct)));
+                    tasks.Add(Task.Run(() => CreateSocket(url, true, childCts.Token)));
+                    tasks.Add(Task.Run(() => CreateSocket(url, false, childCts.Token)));
                 }
                 while (tasks.Count > 0)
                 {
@@ -233,6 +245,7 @@ namespace InABox.Rpc
                         tasks.Remove(result);
                     else
                     {
+                        childCts.Cancel();
                         _socket = result.Result;
                         _connected = true;
 

+ 1 - 1
InABox.Core/DigitalForms/Layouts/Controls/DFLayoutHeader/DFLayoutHeader.cs

@@ -36,7 +36,7 @@ namespace InABox.Core
             Header = "";
             Collapsed = false;
             Alignment = DFLayoutHeaderAlignment.Left;
-            Style = new DFLayoutTextStyle { IsBold = true };
+            Style.IsBold = true;
         }
 
         protected override string GetDescription()