Skip to content

Commit 37d653d

Browse files
committed
stop loop on dispose
1 parent f038b3e commit 37d653d

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

src/StackExchange.Redis/MultiGroupMultiplexer.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ public partial class ConnectionMultiplexer
2121
/// <param name="members">The initial configurations to connect to.</param>
2222
/// <param name="options">Additional options for configuring this group.</param>
2323
/// <param name="log">The <see cref="TextWriter"/> to log to.</param>
24-
#pragma warning disable RS0016, RS0026
24+
#pragma warning disable RS0026
2525
public static Task<IConnectionGroup> ConnectGroupAsync(ConnectionGroupMember[] members, MultiGroupOptions? options = null, TextWriter? log = null)
26-
#pragma warning restore RS0016, RS0026
26+
#pragma warning restore RS0026
2727
{
2828
// create a defensive copy of the array; we don't want callers being able to radically swap things!
2929
members = (ConnectionGroupMember[])members.Clone();
@@ -40,13 +40,13 @@ public static Task<IConnectionGroup> ConnectGroupAsync(ConnectionGroupMember[] m
4040
/// <param name="member1">An additional initial configuration to connect to.</param>
4141
/// <param name="options">Additional options for configuring this group.</param>
4242
/// <param name="log">The <see cref="TextWriter"/> to log to.</param>
43-
#pragma warning disable RS0016, RS0026
43+
#pragma warning disable RS0026
4444
public static Task<IConnectionGroup> ConnectGroupAsync(
4545
ConnectionGroupMember member0,
4646
ConnectionGroupMember member1,
4747
MultiGroupOptions? options = null,
4848
TextWriter? log = null)
49-
#pragma warning restore RS0016, RS0026
49+
#pragma warning restore RS0026
5050
{
5151
options ??= MultiGroupOptions.Default;
5252
options.Freeze();
@@ -326,6 +326,7 @@ static bool TrySelectPreferredGroup(WeakReference weakRef)
326326
{
327327
try
328328
{
329+
if (typed.IsDisposed) return false;
329330
typed.SelectPreferredGroup();
330331
}
331332
catch (Exception ex)
@@ -338,8 +339,11 @@ static bool TrySelectPreferredGroup(WeakReference weakRef)
338339
}
339340
}
340341

342+
internal bool IsDisposed => _disposed;
343+
341344
internal void SelectPreferredGroup()
342345
{
346+
if (_disposed) return;
343347
var previousMuxer = _active;
344348
ConnectionGroupMember? preferredMember = null, previousMember = null;
345349
var members = _members;

src/StackExchange.Redis/PublicAPI/PublicAPI.Unshipped.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ StackExchange.Redis.MultiGroupOptions
2929
StackExchange.Redis.MultiGroupOptions.CheckInterval.get -> System.TimeSpan
3030
StackExchange.Redis.MultiGroupOptions.CheckInterval.set -> void
3131
StackExchange.Redis.MultiGroupOptions.MultiGroupOptions() -> void
32+
static StackExchange.Redis.ConnectionMultiplexer.ConnectGroupAsync(StackExchange.Redis.ConnectionGroupMember! member0, StackExchange.Redis.ConnectionGroupMember! member1, StackExchange.Redis.MultiGroupOptions? options = null, System.IO.TextWriter? log = null) -> System.Threading.Tasks.Task<StackExchange.Redis.IConnectionGroup!>!
33+
static StackExchange.Redis.ConnectionMultiplexer.ConnectGroupAsync(StackExchange.Redis.ConnectionGroupMember![]! members, StackExchange.Redis.MultiGroupOptions? options = null, System.IO.TextWriter? log = null) -> System.Threading.Tasks.Task<StackExchange.Redis.IConnectionGroup!>!
3234
static StackExchange.Redis.MultiGroupOptions.Default.get -> StackExchange.Redis.MultiGroupOptions!
3335
override StackExchange.Redis.LCSMatchResult.LCSMatch.Equals(object? obj) -> bool
3436
override StackExchange.Redis.LCSMatchResult.LCSMatch.GetHashCode() -> int

0 commit comments

Comments
 (0)