Я пытаюсь настроить систему, которая не позволяет моему приложению работать, если USB-кабель устройства отключен. Для этого, если человек активирует функцию, вместо сбоя приложения, я вывожу пользователя на экран загрузки, ожидая повторного подключения кабеля.
Я уже провел много исследований, фактически не обнаружив решение, чтобы исправить эту ошибку и позволить мне заставить ее работать, как я буду sh. Вот мой код:
public async Task WaitingPort()
{
var controllerPort = await this.ShowProgressAsync("Seeking device", " "); //Warning starts here
controllerPort.SetIndeterminate();
await Task.Run(() =>
{
while (port is null)
{
port = CheckPort();
controllerPort.SetMessage("please plub USB");
}
});
await controllerPort.CloseAsync();
}
private SerialPort CheckPort()
{
string[] listPort = SerialPort.GetPortNames();
foreach(string namePort in listPort)
{
SerialPort port = new SerialPort(namePort, 9600);
if (!port.IsOpen)
{
try
{
port.Open();
port.ReadTimeout = 1500;
string data = port.Readline();
if (data.Substring(0, 1) == "A")
{
port.ReadTimeout = 200;
port.Write("777"); // to make it stop sending "A"
return port;
}
else
{
port.Close();
}
}
catch (Exception e1)
{
port.Close();
}
}
}
return null;
}
public MainWindow()
{
WaitingPort(); //WARNING CS4014
...
}
private async void Button_ClickOpen(object sender, RoutedEventArgs e)
{
var controllerPort = await this.ShowProgressAsync("Please wait", " ");
controllerPort.SetIndeterminate();
await Task.Run(() =>
{
try
{
blabla
}
catch (Exception)
{
WaitingPort(); //WARNING CS4014
}
}
}
Я уже пробовал несколько решений ...:
Превращение моей пустоты в задачу
_ = WaitingPort (); // скрыть ошибку, не решая ее
WaitingPort (). Wait (); // тот же случай здесь, скрывается, но не решается
await MyAsyncMethod (). ConfigureAwait (false); // здесь тот же случай, скрывающий, но не решающий
В настоящее время метод WaitingPort работает только при запуске, в противном случае выдается предупреждение.
Я не пытаюсь скрыть, игнорировать, подавить или что-либо подобное ПРЕДУПРЕЖДЕНИЮ, как все решения в стеке , но разрешить его, чтобы заставить его работать . Ребята, есть идеи?
Мне бы очень хотелось, чтобы мой ShowProgressAsyn c работал правильно при вызове другими не асинхронными методами c
Я пока не очень разбираюсь в C#, может быть, я ' мне не хватает каких-то основ?