• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vuk

cross-thread

2 mensagens neste tópico

Boas pessoal!!

Estou a construir uma aplicação com base em sockets (C#), ou seja cliente/servidor, em que posso enviar mensagens do cliente para o servidor, até aqui tudo bem.

Depois  desenvolvi, dentro da mesma aplicação, captura da webcam, que funciona na perfeição, mas o que gostava que fizesse era que, ao enviar uma mensagem do cliente para o servidor, do tipo "abrir cam", este interpretasse a mensagem com um if() e "activasse" a webcam, podendo até começar a enviar dados para o cliente funcionando assim como um ssitema de vigilancia do meu escritório.

Bem, a dúvida é a seguinte: eu ao enviar a mensagem pro servidor dá um erro

- Cross-thread operation not valid: Control 'PictureBox' accessed from a thread other than the thread it was created on

Também ja tentei "simular" o clicar de um botão usando o InvokeOnClick(Button1,EventArgs.Empty), mas não acontece nada.

Alguém tem algum exemplo de como utilizar o InvokeRequired para ultrapassar o cross-thread??

Desde já agradeço a ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Todos os window.Controls têm que ser invocados dentro da mesma thread em que são instanciados.

Podes/deves fazer isso com delegates.

deixo-te aqui um exemplo.


private delegate string ComboBoxGetSelectedItemEventHandler();

private string  getSelectedItem()
        {
            if (this.InvokeRequired)
            {
             object returnedCallBackObject=   Invoke(new ComboBoxGetSelectedItemEventHandler(getSelectedItem), null);
             return (string)returnedCallBackObject;
            }
            else
            {
                return m_cmbx.SelectedItem.ToString();
            }            
        }

No código basta invocares em qq thread o seguinte:


string s_item= getSelectedItem();

/ing

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora