DisposableIpcService.cs 521 B

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