Я ищу способ передачи данных из класса обратно родителю, однако это не так просто, как кажется (например, доступ к переменной класса).
У меня есть этот звонок в моей заявке:
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("Start");
// set up touchpad monitor
cm = new COMManager("COM3",eventLog1);
}
И COMManager выглядит следующим образом:
class COMManager
{
static SerialPort _serialPort;
EventLog eventlogger;
public COMManager(string portname,EventLog eventlogger)
{
this.eventlogger = eventlogger;
this.eventlogger.WriteEntry("started com porter");
StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
//Thread readThread = new Thread(Read);
// Create a new SerialPort object with default settings.
_serialPort = new SerialPort();
// Allow the user to set the appropriate properties.
_serialPort.PortName = portname;
_serialPort.BaudRate = 9600;
_serialPort.Parity = (Parity)Enum.Parse(typeof(Parity), "0");
_serialPort.DataBits = 8;
_serialPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits),"1");
// Set the read/write timeouts
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_serialPort.Open();
_serialPort.DataReceived += serialPort_DataReceived;
}
void serialPort_DataReceived(object s, SerialDataReceivedEventArgs e)
{
this.eventlogger.WriteEntry(Convert.ToChar(_serialPort.ReadChar()).ToString());
}
}
В serialPort_DataReceived регистратор событий работает нормально, однако я хочу иметь возможность передавать это обратно в основной поток при получении любых данных, поскольку мне нужно выполнить некоторые изменения в графическом интерфейсе.
Любые идеи о том, с чего начать, были бы великолепны.