From 25ffc3d55ac6b302c3c4769989b5078975efa920 Mon Sep 17 00:00:00 2001 From: TheRVP Date: Wed, 29 Oct 2025 00:20:04 +0530 Subject: [PATCH] Fix multiple devices issue Also remove the #if !DEBUG code since it is unnecessary. --- .../Services/DeviceService.cs | 22 ++++++++++++++----- .../An2WinFileTransfer/UI/Forms/FormMain.cs | 5 +---- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/An2WinFileTransfer/An2WinFileTransfer/Services/DeviceService.cs b/An2WinFileTransfer/An2WinFileTransfer/Services/DeviceService.cs index 323e055..47e71ca 100644 --- a/An2WinFileTransfer/An2WinFileTransfer/Services/DeviceService.cs +++ b/An2WinFileTransfer/An2WinFileTransfer/Services/DeviceService.cs @@ -7,28 +7,40 @@ namespace An2WinFileTransfer.Services { public class DeviceService { + private readonly IEnumerable _mediaDevices; + + public DeviceService() + { + _mediaDevices = MediaDevice.GetDevices(); + } + public IEnumerable GetConnectedDeviceNames() { - return MediaDevice.GetDevices().Select(d => d.FriendlyName); + return _mediaDevices.Select(d => d.FriendlyName); } public MediaDevice ConnectToDevice(string deviceName) { - var device = MediaDevice.GetDevices() - .FirstOrDefault(d => d.FriendlyName == deviceName); + var device = _mediaDevices.FirstOrDefault(d => d.FriendlyName == deviceName); if (device == null) { throw new InvalidOperationException($"Device '{deviceName}' not found."); } - device.Connect(); + if (!device.IsConnected) + { + device.Connect(); + } + return device; } public void DisconnectDevice(MediaDevice device) { - if (device?.IsConnected == true) + if (device == null) return; + + if (device.IsConnected) { device.Disconnect(); } diff --git a/An2WinFileTransfer/An2WinFileTransfer/UI/Forms/FormMain.cs b/An2WinFileTransfer/An2WinFileTransfer/UI/Forms/FormMain.cs index 6a2ed10..963c061 100644 --- a/An2WinFileTransfer/An2WinFileTransfer/UI/Forms/FormMain.cs +++ b/An2WinFileTransfer/An2WinFileTransfer/UI/Forms/FormMain.cs @@ -7,7 +7,6 @@ using An2WinFileTransfer.Extensions; using An2WinFileTransfer.Models; using An2WinFileTransfer.Services; -using MediaDevices; namespace An2WinFileTransfer.UI.Forms { @@ -169,16 +168,14 @@ private IEnumerable LoadFileTypes() private void PopulateDeviceList() { - _connectedDevices = MediaDevice.GetDevices().Select(d => d.FriendlyName); + _connectedDevices = _deviceService.GetConnectedDeviceNames(); -#if !DEBUG if (_connectedDevices.IsNullOrEmpty()) { MessageBox.Show("No connected MTP devices found. Please connect your device and enable file transfer mode.", "No Devices Found", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } -#endif comboBoxDeviceNames.Items.Clear(); comboBoxDeviceNames.Items.AddRange(_connectedDevices.OrderBy(n => n).ToArray());