Ich habe einen Hintergrundarbeiter, der die Kommunikation der seriellen Schnittstelle überprüft, aber ich möchte es stoppen, wenn der Benutzer auf die Schaltfläche zum Schließen der seriellen Schnittstelle klickt. Der Code der Hintergrund Arbeiter:VC++: Hintergrundarbeiter stoppt nicht
private: System::Void backgroundWorker1_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) {
while (true)
{
try {
String^ tempVal = Arduino->ReadLine();
this->SetText(tempVal);
Arduino->DiscardInBuffer();
if (this->backgroundWorker1->CancellationPending) {
e->Cancel = true;
this->Arduino->Close();
this->pictureAClose->Visible = false;
return;
}
}
catch (TimeoutException^) {
}
}
}
Und die enge Port-Taste:
private: System::Void pictureAClose_Click(System::Object^ sender, System::EventArgs^ e) {
this->backgroundWorker1->CancelAsync();
}
Im Moment tut es nichts, wenn Sie in der Nähe Port klicken.
Sind Sie sicher, dass 'Arduino-> Readline();' blockiert nicht? –