Avatar billede ares Nybegynder
03. december 2007 - 15:23 Der er 3 kommentarer og
1 løsning

læs fra comport.

hvorfor kan jeg ikke det her:

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
  string line = COMPort.ReadExisting();
  listBox_Input.Items.Insert(0, line);
}
fejlmeddelsen lyder noget i stil med:
Handling på tværs af tråde er ugyldig: Objektet 'listBox_Input' blev åbnet fra en anden tråd end den tråd, det blev oprettet i.

Håber der en der kan forklare hvad der sker...

Ares
Avatar billede mrbonus Novice
03. december 2007 - 15:32 #1
Lyder som om du har en tråd der kører læsning fra comporten, den må ikke direkte ændre i din listbox, da din GUI kører i en anden tråd, du kan enten lave et event og en eventhandler i din tråd, hvilket nok er det nemmeste, .NET har dog også implementeret en udemærket implementering af tråde kaldet BackGroundWorker hvilket jeg er blevet ret glad for at bruge, men kan jo ikke lige garantere at det kan benyttes i dit program.
Avatar billede snakeeye Nybegynder
03. december 2007 - 15:57 #2
Som mrbonus siger lyder det som CrossThread exception. Grunden er at du ikke kan ændre i GUI'en fra en anden tråd en den er oprettet i.
En måde at komme uden om det på er at oprette en delegate til funktionen og så invoke den.

f.eks.

private delegate void COMDataRecievedHandler(object sender, SerialDataReceivedEventArgs e);

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (!InvokeRequired)
{
  string line = COMPort.ReadExisting();
  listBox_Input.Items.Insert(0, line);
}
else
{
Invoke(new COMDataRecievedHandler(port_DataReceived), new object[] { sender, e }));
}
}
Avatar billede ares Nybegynder
04. december 2007 - 09:57 #3
snakeeye.... det var lige i skabet... smid et svar...
Avatar billede snakeeye Nybegynder
04. december 2007 - 10:58 #4
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester