AJV Posted July 23, 2005 at 01:30 AM Report #1971 Posted July 23, 2005 at 01:30 AM Boas.. Tou a fazer um programa para ligar um PC, a um modem GSM através da porta série para poder fazer envio de SMS, e posteriormente o envio de dados. Tou a usar o visual Studio 2005, a versão beta 2. Mas estou com um problema. Tou a usar o controlo serialport que vem inserida na framework V2. O problema está que, quando recebo bytes da porta série queria ir colocando-os numa textBox, mas o visual studio dá-me um erro estranho: "Additional information: Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on." Se eu tentar aceder á textBox através do envento de um click num botão não tenho problemas, só dentro do evento de receber dados da porta série. Segue o codigo que estou a utilizar: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Comm_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { String a; a += Comm.ReadExisting(); textBox1.Text = a; } private void button1_Click(object sender, EventArgs e) { Comm.Open(); textBox1.Text = "OLA MUNDO"; } private void button2_Click(object sender, EventArgs e) { Comm.Close(); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Comm.Close(); } } } Tenho o mesmo erro se fizer em C++, ou em basic. Mas se usar o controlo MSCOMM32.ocx no basic, já não tenho erro nenhum. Se houver uma maneira simples de resolver isto, será que alguem me pode dar umas indicações, senão terei que usar o MSCOMM32.ocx. Obrigado Artur Vieira
Mal-Functi Posted July 23, 2005 at 02:01 AM Report #1972 Posted July 23, 2005 at 02:01 AM Alguns objectos, neste caso tudo o que seja relacionado com o GUI, só podem ser acedidos/modificados pela propria thread que os criou. O VS deve dar-te esse erro para te avisar de antemão que isso são irá funcionar!
deathseeker25 Posted July 23, 2005 at 10:16 AM Report #1974 Posted July 23, 2005 at 10:16 AM Alguns objectos, neste caso tudo o que seja relacionado com o GUI, só podem ser acedidos/modificados pela propria thread que os criou. O VS deve dar-te esse erro para te avisar de antemão que isso são irá funcionar! Bem-vindo ao forum Mal-Functi....
AJV Posted July 24, 2005 at 12:41 AM Author Report #1993 Posted July 24, 2005 at 12:41 AM Boas.. Se compilar em modo release, e executar o .exe directamente sem ser através do visual studio não dá nenhum erro, dá-me a ideia que é somente um aviso do visual studio, o chato, é que em modo debug mesmo que faça continuar o programa, ele para e fecha, não continua a correr. Eu queria saber como resolver este problema, para poder correr o programa em modo debug, nem que seja em C++, ou visual basic. Não tenho preferencia pela linguagem, isto é um programa para aprender a fazer algumas coisas em qualquer das 3 linguagens (C++, basic ou C#). Obrigado. Artur Vieira
killercode Posted November 17, 2006 at 04:54 PM Report #64947 Posted November 17, 2006 at 04:54 PM bom esse erro ocorre quando tas a tentar aceder a um controlo q não pertence a thread q esta actualmente a correr tens 2 maneira de resolver esse problema a primeira não te aconselho... é so meteres isto imediatamente antes do sitio onde da a exception: CheckForIllegalCrossThreadCalls = false a segunda é fazeres o seguinte: - Verificar se precisas de invocar a outra thread Se sim, invocas Se não fazes a alteração a textbox directamente ou seja será algo deste genero if(InvokeRequired) { Invoke((MethodInvoker)delegate{ textbox.Text = "FUNCIONOU!!!"; }) } else { textbox.Text = "FUNCIONOU!!!"; } depois diz-me se conseguiste 😕 Geek PressWeboeste.Com
TheDark Posted November 18, 2006 at 03:49 AM Report #65051 Posted November 18, 2006 at 03:49 AM killercode: és um verdadeiro desenterra-threads 😄 Desaparecido.
killercode Posted November 19, 2006 at 01:19 PM Report #65274 Posted November 19, 2006 at 01:19 PM epa... são assuntos q ficaram por resolver... e como não sei se ja foram resolvidos ou não limito-me a dar a minha opinião sobre o assunto se ajudar tudo be se não ajudar... olha.... paciencia!!! Geek PressWeboeste.Com
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now