public void Close() { if (_IsClosing) { return; } _IsClosing = true; try { _UsbDeviceConnection?.Dispose(); _UsbDevice?.Dispose(); ReadUsbInterface?.Dispose(); WriteUsbInterface?.Dispose(); _UsbDeviceConnection = null; _UsbDevice = null; ReadUsbInterface = null; WriteUsbInterface = null; } catch (Exception) { //TODO: Logging } _IsClosing = false; }
public async Task WriteAsync(byte[] data) { await _WriteAndReadLock.WaitAsync().ConfigureAwait(false); try { _ = await WriteUsbInterface.WriteAsync(data).ConfigureAwait(false); } finally { _ = _WriteAndReadLock.Release(); } }
public sealed override void Dispose() { if (disposed) { Logger.LogWarning(Messages.WarningMessageAlreadyDisposed, DeviceNumberId); return; } disposed = true; Logger.LogInformation(Messages.InformationMessageDisposingDevice, DeviceNumberId); Close(); try { _UsbDeviceConnection?.Dispose(); _UsbDevice?.Dispose(); ReadUsbInterface?.Dispose(); WriteUsbInterface?.Dispose(); _UsbDeviceConnection = null; _UsbDevice = null; ReadUsbInterface = null; WriteUsbInterface = null; } catch (Exception ex) { Logger.LogError(ex, "Dispose error DeviceId: {deviceNumberId}", DeviceNumberId); } _InitializingSemaphoreSlim.Dispose(); base.Dispose(); GC.SuppressFinalize(this); }
public Task WriteAsync(byte[] data) { return(WriteUsbInterface.WriteAsync(data)); }