Удаленное нажатие кнопки WPF с клиента с помощью WebSocketC#

Место общения программистов C#
Ответить
Anonymous
 Удаленное нажатие кнопки WPF с клиента с помощью WebSocket

Сообщение Anonymous »

Я новичок в программировании в целом, поэтому будьте терпеливы.

У меня есть приложение WPF, которое может получить номер значка из устройства чтения карт. Это приложение WPF использует сценарий для чтения карты, поэтому на нем есть кнопки запуска, паузы и остановки (потому что я выполняю цикл опроса).
У меня также есть веб-сайт, с которым я хочу, чтобы он взаимодействовал с Приложение WPF с использованием WebSocket (с использованием System.Net.WebSockets). WebSocket работает, поскольку я могу передать значение номера значка на клиентский веб-сайт.
Далее моя цель — предоставить пользователю возможность запускать, приостанавливать и останавливать приложение WPF, таким образом напрямую взаимодействуя с кнопками.
ниже находится моя кнопка остановки, я использую ее, потому что она самая простая из трех. конечный автомат — это другой класс, который обрабатывает текущее состояние машины и позволяет мне контролировать поведение каждой кнопки.

Код: Выделить всё

        private void StopButton_Click(object sender, RoutedEventArgs e)
{
try
{
_stateMachine.Stop(); //state machine set to Stopped
_logger.Info("Service stopped.");
}
catch (Exception ex)
{
_logger.Error("Error stopping service.", ex);
}
}
ниже находится моя кнопка RunPause

Код: Выделить всё

        public void RunPauseButton_Click(object sender, RoutedEventArgs e)
{
try
{
switch (_stateMachine.CurrentState)
{
case StateMachine.State.Stopped:
_stateMachine.Run(GetScriptRunnerPath, GetReaderSelection);
_logger.Info("Service started.");
break;

case StateMachine.State.Running:
_stateMachine.Pause();
_logger.Info("Service paused.");
break;

case StateMachine.State.Paused:
_stateMachine.Resume(GetScriptRunnerPath, GetReaderSelection);
_logger.Info("Service resumed.");
break;
}
}
catch (Exception ex)
{
_logger.Error("Error toggling service state.", ex);
}
}
Я пытался использовать обработчик событий, но не нашел способа заставить его работать. Я не знаю, моя реализация просто ужасна или чатгпт дает мне неверную информацию. ниже представлена ​​попытка заставить его работать, предложенная ИИ.
p/s Я удалил строку для метода RunPause, потому что думаю, что это только удлинит код.

Код: Выделить всё

public class ApplicationController //
{
public event EventHandler StopRequested;
public void OnStopRequested()
{
StopRequested?.Invoke(this, EventArgs.Empty);
}
}
ниже находится главное окно

Код: Выделить всё

private readonly ApplicationController _controller;

public MainWindow()
{
InitializeComponent();

_controller = new ApplicationController();

// Subscribe to events from the controller
_controller.StopRequested += Controller_StopRequested;
}

private void StopButton_Click(object sender, RoutedEventArgs e)
{
// Trigger the StopRequested event
_controller.OnStopRequested();
}
ниже снова приведен класс контроллера приложения

Код: Выделить всё

public class ApplicationController
{
public event EventHandler StopRequested;

public void OnStopRequested()
{
StopRequested?.Invoke(this, EventArgs.Empty);

try
{
_stateMachine.Stop();
_logger.Info("Service stopped.");
}
catch (Exception ex)
{
_logger.Error("Error stopping service.", ex);
}
}
}
Честно говоря, я так растерялся в идее, которую мне пытается подсказать ИИ.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -websocket
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»