public IAsyncResult BeginPoll(string device, string operation, AsyncCallback callback, object state) { var pollCompletionSource = new PollCompletionSource(device, operation, callback, state); NotificationListener.Create().Register(device, operation, pollCompletionSource); return(pollCompletionSource.Task); }
public void Dispose() { try { _disposing.EnterWriteLock(); if (!_disposed) { try { _cancellationSource.Cancel(); _worker.Wait(); } catch { } finally { _cancellationSource.Dispose(); _worker = null; _cancellationSource = null; _devices = null; _disposed = true; _listener = null; } } } finally { _disposing.ExitWriteLock(); } }
public static NotificationListener Create() { if (_listener == null) { lock (_sync) { if (_listener == null) { _listener = new NotificationListener(); } } } return(_listener); }
public void UnregisterAll() { NotificationListener.Create().Dispose(); }