» »

[VB] backgroundworker1

[VB] backgroundworker1

korenje3 ::

Rad bi naredil da mi updejta dataset preko mysql povezave v backgroundworker1. Se komu sanja kako to narediti?
To pa zato, da v primeru izpada povezave ne blokira program.

Sub reloadlist()
If Me.BackgroundWorker1.IsBusy = False Then
'cleandatasetu()
Me.BackgroundWorker1.RunWorkerAsync({fxts.datasetu.Tables("users")})
Else
fxts.infobox("SQL localDB UPDATE: Backgroundworker is bussy. Try again.")
End If

Exit Sub
Try
cleandatasetu()
adapter_users.Fill(fxts.datasetu.Tables("users"))
Catch ex As Exception
fxts.infobox("SQL localDB update: " & ex.Message.ToString)
End Try
End Sub


   Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Try
            adapter_users.Fill(e.Argument(0))
        Catch ex As Exception
            MsgBox("SQL localDB update: " & ex.Message.ToString)
        End Try
    End Sub


A je možno poskati dataset tabelo kot argument v background worker?
V primeru če tako naredim, vidim v datagridview samo 1 vrstico. Neki eni gumbi ne delajo. Če sortiram mi prikaže vse elemente v datagridview1 form. V čem je haklc?
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

korenje3 ::

Pa še to me zanima...

zadebo bi rad dodal takole brez generiranje array liste.
lala.DataSource = {array_list}

Imam pa arraylist za recimo "test" v katerem imam elemente "a", "b"...
jaz bi pa sedaj rad dodal v {array_list} slednje: a.name, b.name,...

Kako se to lahko naredi v eni vrstici?
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

Looooooka ::

background worder ima event znotraj katerega bi moral delati stvari kot so error okna in podobne bedarije, torej si ze v zacetku "zlorabil" background worker.
To, da iz background workerja uporabljas objekt, ki si ga naredil na formi(adapter_users) tud ne vem ce je pametno, ker adapter_users verjetno uporablja konekcijo, ki si jo prav tako naredil na formi.
Bolj pravilno bi blo to, da background workerju vse parametre, ki jih potrebujes podas kot parameter preden ga zazenes.
Ta potem vse kar rabi naredi in zazene znotraj DoWork eventa. Rezultate in progress spet vracas nazaj na gui z metodo, ki je temu namenjena(ne vem na pamet ampak bgworker ima metodo, ki bo potem na gui threadu dvignila event reportprogress oz nekaj podobnega).
Tako program "ne bo freezal".
Ce bos tist progressevent dvigal za vsako bedarijo(recimo na 100 ms) bo program vseeno "freezal". Zato je pametno, da se tudi tam malce kontroliras.
Ko zadevo koncas...rezultat tik pred koncem spet vrnes nazaj s to reportprogress metodo.
Obenem se ti pa ob koncu dvigne tudi event, ki ti pove, da je background worker koncal z delom.
Izogibaj se msgboxanju znotraj dowork eventa. Ce ze moras kaj updejtat na gui-ju uporabi report progress ALI pa invoke metodo na komponenti(ker drugace bos dobil lep exception, da je nek xy thread poskusal invokat kontrolo).

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[VB] datagridview

Oddelek: Programiranje
351833 (1216) korenje3
»

C# threadanje in gui

Oddelek: Programiranje
8698 (589) darkolord
»

Vprasanje glede koncepta programa [c#]

Oddelek: Programiranje
111910 (1652) _Dormage_
»

[c#] Vprasanje glede BackGroundWorker classa in spreminanja gui elementa

Oddelek: Programiranje
6709 (635) Ericssony
»

C# BackgroundWorker Class problem

Oddelek: Programiranje
61180 (1136) hendriks

Več podobnih tem