DisposableIpcService.cs
1 using System; 2 using System.Threading; 3 4 namespace Ryujinx.HLE.HOS.Services 5 { 6 abstract class DisposableIpcService : IpcService, IDisposable 7 { 8 private int _disposeState; 9 10 public DisposableIpcService(ServerBase server = null) : base(server) { } 11 12 protected abstract void Dispose(bool isDisposing); 13 14 public void Dispose() 15 { 16 if (Interlocked.CompareExchange(ref _disposeState, 1, 0) == 0) 17 { 18 Dispose(true); 19 } 20 } 21 } 22 }