Click here to Skip to main content
       

.NET Framework

 
JokeRe: String compression Pinmembern.podbielski19-Nov-12 22:22 
Questionestoy tratando de compilar un archivo.mex a .net [modified] Pinmemberyeyomax19-Nov-12 10:33 
AnswerRe: estoy tratando de compilar un archivo.mex a .net PinmemberEddy Vluggen19-Nov-12 12:09 
GeneralRe: estoy tratando de compilar un archivo.mex a .net PinmemberIdeasPravinh24-Nov-12 0:47 
AnswerRe: estoy tratando de compilar un archivo.mex a .net PinmemberBernhard Hiller19-Nov-12 23:35 
GeneralRe: estoy tratando de compilar un archivo.mex a .net Pinmemberyeyomax20-Nov-12 6:25 
GeneralRe: estoy tratando de compilar un archivo.mex a .net PinmvpDave Kreskowiak20-Nov-12 7:11 
Question[VB.NET 2008] Change form from separate thread (Windows CE) PinmemberMember 949661319-Nov-12 3:51 
Hello everybody,
I have a problem about the modification of fields (such as textbox, label, acc) of a form from another thread.
I state that I am not an expert on Visual Studio 2008 and, unfortunately, even on VB.NET but I have to use these tools to write an application that runs on a device with Windows CE 5.0.
In another forum I've already found a post about it and I followed the solution proposed.
Everything works if I write all the code in the class of my form (Form1), I mean in the Form1 there is a button that starts a thread that increments by 1 a variable declared in Form1, and then calls a "Sub AggLab()", always in Form1, that updates the contents of a label (in Form1) with the increased value of the variable:
 
Imports System.Threading
 
Public Class Form1
  Dim MyNewThread As Thread
  Dim tmp As Int32 = 0
 
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'create the thread
    MyNewThread = New Thread(AddressOf SubDelThread)
    MyNewThread.Name = "NuovoThread"
    'start the thread
    MyNewThread.Start()
  End Sub
 

  Private Sub SubDelThread()
    Do
      tmp = tmp + 1
      AggLab()
      Thread.Sleep(1000)
    Loop
  End Sub
 
  Private Delegate Sub AggLabDel()
  Private Sub AggLab()
 
    If Me.InvokeRequired Then
      Me.BeginInvoke(New AggLabDel(AddressOf AggLab))
      Return
    End If
 
    Label1.Text = tmp.ToString
 
  End Sub
 
End Class
 
But if the function executed within the thread is in a different class/file it does not work anymore:
 
'file Form1.vb

Imports System.Threading
 
Public Class Form1
  Dim MyNewThread As Thread
 
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'create the thread 
    MyNewThread = New Thread(AddressOf MyThread.MyThreadExecute)
    MyNewThread.Name = "NuovoThread"
    'start the thread
    MyNewThread.Start()
  End Sub
 
  Private Delegate Sub AggiornaLabelDelegate()
  Public Sub AggiornaLabel()
 
    If Me.InvokeRequired Then
      Me.BeginInvoke(New AggiornaLabelDelegate(AddressOf AggiornaLabel))
      Return
    End If
 
    Label1.Text = MyThread.iii.ToString
 
  End Sub
 
'file MyThread.vb

Imports System.Threading
 
Public Class MyThread
  Private Shared miii As Int32 = 0
 
  Public Shared Property iii() As Int32
    Get
      Return miii
    End Get
    Set(ByVal value As Int32)
      miii = value
    End Set
  End Property
 
  Public Shared Sub MyThreadExecute()
    Do
      iii = iii + 1
      Form1.AggiornaLabel()
      Thread.Sleep(1000)
    Loop
  End Sub
 
End Class
 
What I check with debugging is that in this case "Me.InvokeRequired" is always false.
 
Where did I go wrong?
Can anyone give me a tip?
 
Thanks in advance.
AnswerRe: [VB.NET 2008] Change form from separate thread (Windows CE) PinmemberSimon_Whale19-Nov-12 4:04 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) Pinmembersteve_949661319-Nov-12 5:37 
AnswerRe: [VB.NET 2008] Change form from separate thread (Windows CE) PinmemberEddy Vluggen19-Nov-12 6:04 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) Pinmembersteve_949661319-Nov-12 23:54 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) PinmemberEddy Vluggen20-Nov-12 1:53 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) Pinmembersteve_949661320-Nov-12 4:36 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) PinmemberEddy Vluggen20-Nov-12 5:33 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) Pinmembersteve_949661320-Nov-12 6:23 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) PinmemberEddy Vluggen20-Nov-12 10:21 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) Pinmembersteve_949661320-Nov-12 22:25 
GeneralRe: [VB.NET 2008] Change form from separate thread (Windows CE) PinmemberEddy Vluggen21-Nov-12 6:07 
QuestionBinding gridview from webservice using jquery Pinmembersaravanan2509218-Nov-12 21:41 
AnswerRe: Binding gridview from webservice using jquery PinmemberPhanindra26119-Nov-12 7:05 
QuestionNlog for .Net compact PinmemberTalSt17-Nov-12 20:24 
AnswerRe: Nlog for .Net compact PinmvpRichard MacCutchan17-Nov-12 22:43 
GeneralRe: Nlog for .Net compact PinmemberTalSt18-Nov-12 2:15 
GeneralRe: Nlog for .Net compact PinmvpRichard MacCutchan18-Nov-12 2:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web03 | 2.8.141220.1 | Last Updated 18 Dec 2014
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid