[ bobby63 @ 28.06.2009. 17:07 ] @
Poz svima Imam aplikaciju sa dve forme(Form1 i Form2) koje se u isto vreme vide na ekranu. Prvo se staruje Form1 pa zatim otvara Form2. Form1 je glavna forma i povremeno pristupa bazi i izvrsava neke proracune koji mogu da potraju. Form2, uglavnom sluzi kao displej za neke rezultate ali ima vise tajmera koji rade non-stop i koji takodje vrse neke proracune. Kod u obe forme radi dobro i sve se izvrsava na vreme. Problem je sto dok Form1 radi (izvrsava nesto) nemam nikakve promene na Form2, tj ne mogu da osvezavam kontrole (textbox, label, etc). Kod koji koristim za upis texta je Thread safe i radi OK. Code: Private Delegate Sub SetControlTextInvoker(ByVal ctl As Control, ByVal text As String) Private Sub SetControlText(ByVal ctl As Control, ByVal text As String) If ctl.InvokeRequired Then ctl.Invoke(New SetControlTextInvoker(AddressOf SetControlText), ctl, text) Else ctl.Text = text ctl.Refresh() End If End Sub A kod koji koristim za tajmere u Form2 je: Code: Public Sub TimerStartMeter() 'to stop timer do "tickerX.dispose" tickerMeter = New System.Threading.Timer(AddressOf TimerMethodMeter, Nothing, 5000, 100) 'Time in ms End Sub Public Sub TimerMethodMeter(ByVal state As Object) Dim trdMeter As New Thread(AddressOf TimerWorkMeter) trdMeter.IsBackground = True trdMeter.Start() End Sub Sub TimerWorkMeter() 'Ovde ide kod koji se izvsava a upis u kontrolu se poziva sa SetControlText(ImeKontrole, NekiString) End Sub Problem bih mogao da resim da pozivam osvezavanje iz Form1 i to radi ali znacajno komplikuje stvar jer su sve varijable karakteristicne za Form2. Pitanje je kako da u real-time radi osvezavanje u Form2 (pozvano iz Form2) dok je Form1 zaposlena? Unapred hvala |