Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

sergiofer

Eventos

Mensagens Recomendadas

sergiofer

Olá a todos

Tenho uma variavel global, que é alterada, por uma thread diferente da principal, e essa variavel deveria actualizar uma textbox, sempre que fosse alterada, existe alguma maneira de activar um evento, sempre que o valor dessa variavel for alterado?

Ou então existe alguma maneira de uma thread alterar uma textbox que foi criada na thread principal?

Obrigado desde já

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Podes alterar através de outra thread usando Delegates. Nunca os usei, mas já li sobre isso. :thumbsup:

Google


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

    Private Delegate Sub FazerQualquerCoisa()

    Private Sub Chamada()
        If Me.InvokeRequired = True Then
            Me.BeginInvoke(New FazerQualquerCoisa(AddressOf AplicarAlteracoes))
        End If
    End Sub

    Private Sub AplicarAlteracoes()
        'Altera aqui o que quiseres no thread onde o GUI foi criado
    End Sub

Usei uma coisa parecida com isto para apanhar devoluções de chamadas assíncronas à lib OpenMetaVerse.

A traços largos, o InvokeRequired define se a chamada está no thread certo, ou não, e se/quando estiver, tumbas!

O Sub Chamada pode ser um handler de um evento, como pretendes.

Podes passar argumentos também, obviamente.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ziwdon

Aconselho-te a pesquisar e a ler sobre threads. É um assunto..."sensível".


"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
sergiofer

Estive a testar e não tive grandes resultados, por isso alterei ligeiramente o modo de funcionamento, pelo menos por agora, para poder efectuar mais testes.

Neste momento, o que eu necessito de fazer é despoletar um evento, sempre que o valor de uma variavel global é alterado, algo tipo o "textchanged" de uma textbox, alguém me pode orientar, sobre como fazer isto?

Peço desculpa se a pergunta parecer demasiado básica, mas não estou a conseguir.

Obrigado a todos pelo interesse

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Toma lá um exemplo parvo, saído à pressão, mas que vai concerteza deixar uma ideia de como é que as coisas funcionam.

Escrevi-te dois métodos: adicionando um handler ou ter um sub com um handler específico. É uma questão de pensares a utilidade e adaptares à tua necessidade.

Se usares a sub com o handler específico, não precisas de adicionar o handler, e se adicionares o handler, não precisas de dar o handler específico ao sub.

Se meteres os dois ao mesmo tempo, como no exemplo, são te os dois disparados. E quem diz dois diz dois mil.

Public Class Form1

    Private Event ClickNoForm(ByVal X As Integer, ByVal Y As Integer)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler Me.ClickNoForm, AddressOf FormClicado
    End Sub

    Private Sub FormClicado(ByVal X As Integer, ByVal Y As Integer)
        MsgBox(String.Format("Detectado clique em x={0} e y={1}", X, Y))
    End Sub

    Private Sub FormClicadoMetodo2(ByVal X As Integer, ByVal Y As Integer) Handles Me.ClickNoForm
        MsgBox(String.Format("(Método 2) Detectado clique em x={0} e y={1}", X, Y))
    End Sub

    Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
        RaiseEvent ClickNoForm(e.X, e.Y)
    End Sub

End Class


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.