bonjour tout le monde j'ai un petit problème de liaison série et je récupère une erreur "Safe handle has been closed"
j'ai une carte arduino diciemilia avec laquel je communique sur un port com, j'ai aussi une interface graphique sur mon application (de test), le problème c'est que ma carte est comfigurer pour envoyer une chaine de caractère en fonction de l'entrée que l'on active sur celle ci, elle me sert de capteur, donc pour éviter de bloquer mon interface graphique j'ai définie un port serie et un thread
Serialport^ s;
threading t;
t = gcnew Threading::Thread(gcnew Threading::ThreadStart(this, &Form1::ExecuteLongTraitement));j'ai fait un thread qui lit en continue les lignes que la carte envoye sur la liaison série donc le thread sera toujour bloquer sur l'instruction readline, le soucis c'est que j'ai defois besoin de couper se thread, donc j'ai fait un bouton pour arreter le thread
t->Abord();
mais quand il termine le thread, la liaison série était toujour active et bloquer sur readline et je récupère cette erreur
comment je pourrais faire pour contourné cette erreur car, si je ne lis rien sur la liaison série que je termine le thread je n'ai pas d'erreur meme si j'oublie de fermé la liaison série
private
: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
if(t->IsAlive)
{
t->Abort();
label1->Text="thread terminer";
label1->Update();
}
else{
t = gcnew Threading::Thread(gcnew Threading::ThreadStart(this, &Form1::ExecuteLongTraitement));
t->Start();
label1->Text="thread commencer : capteur";
label1->Update();
}
}
void ExecuteLongTraitement()
{
String^ line;
s.Open();
while(1)
{
line=s.ReadLine();
if(line="a\r")
{
this->Invoke(ProgressBarDelegate);
}
}
en fait j'aimerais pouvoir killer mon thread proprement sans erreur merci