Backgroundworker werte übergeben ist mir unklar...

  • VB.NET

Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von ronaldl.

    Backgroundworker werte übergeben ist mir unklar...

    Hallo zusammen, ich möchte was im bgw laufen lassen aber alle versuche ihm was mit zu geben sind gescheitert.... kann mir das bitte jemand erkären was ich da falsch mache ?

    hier mein code...

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.ManagementImports System.ComponentModel
    3.  
    4.  
    5. Public Class keDim dbu As String = Fotosoft.Label3.Text
    6. Dim dbp As String = Fotosoft.Label4.TextDim dbh As String = Fotosoft.Label5.Text
    7. Dim dbd As String = Fotosoft.Label6.Text
    8. Dim wertT As String = ""
    9. Dim wertPp As String = ""
    10.  
    11. Private WithEvents bgw As New BackgroundWorker
    12.  Private Sub ke_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. 'erlaubt zugriff auf die windows form
    14. bgw.WorkerReportsProgress = True
    15. 'erlaubt unterbrechung des bgw z.b. wenn das programm beendet wird
    16. bgw.WorkerSupportsCancellation = True
    17. Label6.Text = ""
    18. Label1.Visible = False
    19. Label2.Visible = False
    20. Label4.Visible = False
    21. Label5.Visible = False
    22. ComboBox1.Visible = False
    23. ComboBox2.Visible = False
    24. RectangleShape1.Visible = False
    25. Button2.Text = "Karten Ordner Wählen"
    26. ' Hauptordner
    27. Dim sql As String = "select * from turniere order by tid desc"
    28. Dim con As New MySqlConnectionDim cmd As New MySqlCommand(sql, con)
    29. Dim myAdapter As New MySqlDataAdapter
    30. Dim reader As MySqlDataReadercon.ConnectionString = "server='" & dbh & "';" _
    31. & "uid='" & dbu & "';" _& "pwd='" & dbp & "';" _
    32. & "database='" & dbd & "';"
    33. con.Open()
    34. reader = cmd.ExecuteReader()
    35. Do While reader.Read() 'Jede Reihe durchlaufenComboBox1.Items.Add(reader("tid") & " / " _
    36. & reader("tname"))
    37. Loop
    38. reader.Close() 'Reader schliesen
    39. con.Close() 'Connection schliesen
    40. End SubPrivate Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    41. 'prüft ob der bgw noch läuft und beendet diesen dann
    42. 'bedingung - siehe form_load
    43. If bgw.IsBusy Then
    44. bgw.CancelAsync()
    45. End If
    46. End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    47. Dim fbd As New FolderBrowserDialogfbd.RootFolder = Environment.SpecialFolder.MyComputer
    48. fbd.ShowNewFolderButton = True
    49. fbd.Description = "Wählen Sie ein Karte aus"If fbd.ShowDialog() = _
    50. Windows.Forms.DialogResult.OK Then
    51. ElseMsgBox("Abbruch")
    52. End If
    53. Label6.Text = fbd.SelectedPath & "\"
    54. Label1.Visible = True
    55. Label2.Visible = True
    56. Label4.Visible = True
    57. Label5.Visible = True
    58. ComboBox1.Visible = True
    59. ComboBox2.Visible = True
    60. RectangleShape1.Visible = True
    61. End SubPublic Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    62. ' unterordner
    63. ComboBox2.Items.Clear()
    64. ComboBox2.Text = ""
    65. Dim selectedIndexT As Integer
    66. selectedIndexT = ComboBox1.SelectedIndex
    67. Dim selectedItemT As ObjectselectedItemT = ComboBox1.SelectedItem.Split("/").GetValue(0)
    68. Dim wertT As String
    69. wertT = selectedItemT
    70. Dim sqlp As String = "select * from pruefungen where tid = " & wertT & " order by pid desc"
    71. Dim con As New MySqlConnectionDim cmd As New MySqlCommand(sqlp, con)
    72. Dim myAdapter As New MySqlDataAdapter
    73. Dim reader As MySqlDataReadercon.ConnectionString = "server='" & dbh & "';" _
    74. & "uid='" & dbu & "';" _& "pwd='" & dbp & "';" _
    75. & "database='" & dbd & "';"
    76. con.Open()
    77. reader = cmd.ExecuteReader()
    78. Do While reader.Read() 'Jede Reihe durchlaufenComboBox2.Items.Add(reader("pid") & " / " _
    79. & reader("pname"))
    80. Loop
    81. reader.Close() 'Reader schliesen
    82. con.Close() 'Connection schliesen
    83. End SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    84. bgw.RunWorkerAsync()
    85.  
    86.  
    87. End Sub
    88. 'Region "BackGroundWorker Events"Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgw.DoWork
    89. Dim myFiles() As FileInfo = sourcePath.GetFiles()
    90. 'Array.Sort(myFiles)
    91. Dim AE As Integer
    92. AE = UBound(myFiles) - LBound(myFiles) + 1
    93. Label11.Text = AE.ToStringDim anz As String = 0For i As Integer = 0 To AE - 1
    94. myFiles(i).MoveTo(DestinationPath & myFiles(i).ToString)
    95. ProgressBar1.Focus()
    96. ProgressBar1.Maximum = Label11.Text + 1Application.DoEvents()
    97. ProgressBar1.Value += 1
    98. ProgressBar1.Refresh()
    99. Label10.Focus()
    100. Label10.Text = ProgressBar1.Value / ProgressBar1.Maximum * 100 & " %"
    101. Label10.Refresh()
    102. Label18.Focus()
    103. Label18.Text = ProgressBar1.Value
    104. Label18.Refresh()
    105. NextDim DestPath As New DirectoryInfo(Label9.Text)
    106. Dim dmyFiles() As FileInfo = DestPath.GetFiles()For i As Integer = 0 To dmyFiles.Length - 1
    107. Dim fn0 As String = dmyFiles(i).ToStringDim fl As Integer = fn0.Length
    108. If fl < 15 ThenDim fl1 As Integer = fl - 4
    109. Dim fn1 As String = fn0.Substring(4, fl1)Dim fn2 As String = "IMG_" & wertPp & fn1
    110. Dim fn3 As String = Replace(fn2, " ", "")Dim fn4 As String = Label9.Text & fn3
    111. If File.Exists(fn4) Then
    112. ' MsgBox(fn4 & " exist")
    113. Else
    114. ' MsgBox(Label9.Text & fn3)
    115. dmyFiles(i).MoveTo(Label9.Text & fn3)
    116. End If
    117. End If
    118. Next
    119. bgw.ReportProgress(100) 'die 100 steht hier für einen prozentsatz
    120. 'oder
    121. 'bgw.ReportProgress(100, "Muss was Ausgeben.") 'im zweiten parameter kann ein objekt übergeben werden
    122. 'End If
    123. End SubPrivate Sub bgw_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgw.ProgressChanged
    124. If ComboBox1.Text = "" ThenMsgBox(" Bitte ein Turnier auswählen ! ")
    125. ElseIf ComboBox2.Text = "" ThenMsgBox(" Bitte ein Prüfung auswählen ! ")
    126. Else
    127. Dim selectedIndexT As Integer
    128. selectedIndexT = ComboBox1.SelectedIndex
    129. Dim selectedItemT As ObjectselectedItemT = ComboBox1.SelectedItem.Split("/").GetValue(0)
    130. wertT = selectedItemT
    131. Dim selectedIndexP As Integer
    132. selectedIndexP = ComboBox2.SelectedIndex
    133. Dim selectedItemP As ObjectselectedItemP = ComboBox2.SelectedItem.Split("/").GetValue(0)
    134. Dim wertP As String
    135. wertP = selectedItemPwertPp = Replace(selectedItemP, ".", "")
    136. Dim sourcePath As New DirectoryInfo(Label6.Text)Dim DestinationPath As String = Label9.Text
    137. End If
    138. End Sub
    139.  Private Sub bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgw.RunWorkerCompleted
    140. MsgBox(" Dateien fertig kopiert und unbenannt ! ")Me.Close()
    141. End SubPrivate Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
    142. Dim selectedIndexT As Integer
    143. selectedIndexT = ComboBox1.SelectedIndex
    144. Dim selectedItemT As ObjectselectedItemT = ComboBox1.SelectedItem.Split("/").GetValue(0)
    145. Dim wertT As String
    146. wertT = selectedItemT
    147. Dim wertT1 As StringwertT1 = wertT.Replace(" ", "")
    148. Dim selectedIndexP As Integer
    149. selectedIndexP = ComboBox2.SelectedIndex
    150. Dim selectedItemP As ObjectselectedItemP = ComboBox2.SelectedItem.Split("/").GetValue(0)
    151. Dim wertP As String
    152. wertP = selectedItemPDim sourcePath As New DirectoryInfo(Label6.Text)
    153. Dim myFiles() As FileInfo = sourcePath.GetFiles()
    154. 'Array.Sort(myFiles)
    155. Dim AE As Integer
    156. AE = UBound(myFiles) - LBound(myFiles) + 1
    157. Label11.Text = AE.ToString
    158. 'ziellaufwerk destlegen
    159. Dim sqlc As String = "select ppfad from pruefungen where tid = " & wertT1 & " and pid = " & wertP & " "
    160. Dim con1 As New MySqlConnectionDim cmdc As New MySqlCommand(sqlc, con1)
    161. Dim myAdapter1 As New MySqlDataAdaptercon1.ConnectionString = "server='" & dbh & "';" _
    162. & "uid='" & dbu & "';" _& "pwd='" & dbp & "';" _
    163. & "database='" & dbd & "';"
    164.  
    165. Dim tppf As String
    166. con1.Open()tppf = Convert.ToString(cmdc.ExecuteScalar)
    167. Dim tppf1 As String = Replace(tppf, ".", "\")Dim tppfn0 As Integer = tppf1.Length
    168. Dim tppfn1 As Integer = tppfn0 - 4Dim tppf2 As String = tppf1.Substring(0, tppfn1)
    169. Dim tppf3 As String = tppf2 & wertPDim wertPp As String = Replace(wertP, ".", "")
    170. Label9.Text = tppf3 & "\"Dim zl As String = Label9.Text.Substring(0, 1)Dim al As String = Label6.Text.Substring(0, 1)
    171. con1.Close()
    172. 'Freier Platz ziellaufwerkDim fs, plattefs = CreateObject("Scripting.FileSystemObject")
    173. platte = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(zl)))
    174. Dim free1z As Double = New DriveInfo(zl).AvailableFreeSpace / 1024 / 1024 / 1024
    175. Dim freez As String = (free1z.ToString("00.000")) & " GB sind auf Ziellaufwerk frei "
    176. Label12.Text = freezDim meda1 As Double = New DriveInfo(al).AvailableFreeSpace / 1024 / 1024 / 1024
    177. Dim meda2 As Double = New DriveInfo(al).TotalSize / 1024 / 1024 / 1024Dim meda3 As Double = meda2 - meda1
    178. Dim meda As String = (meda3.ToString("00.000"))
    179. Label13.Text = meda & " GB daten sind auf Karte "Dim reda1 As Double = free1z - meda3
    180. Dim reda As String = reda1.ToString("00.000")
    181. Label16.Text = reda & " GB sind auf Ziellaufwerk nach einlesen frei"
    182. If meda3 > free1z ThenMsgBox(" Achtung es steht nicht ausreichen Speicherplatz auf dem Server zur Verfügung !! ")
    183. End If
    184. End Sub
    185.  
    186. End Class


    vielen Dank schon mal ronaldl
    Müsste glaub so funktionieren

    VB.NET-Quellcode

    1. bgw.RunWorkerAsync(New Object() {34, "string", "irgendwas", 4})


    Auslesen

    VB.NET-Quellcode

    1. Dim obj As Object() = DirectCast(e.Arguments, Object())
    2. Dim i1 As Integer = DirectCast(obj(0), Integer) ' 34
    3. Dim s1 As String = obj(1).ToString() ' "string"
    4. Dim s2 As String = obj(2).ToString() ' "irgendwas"
    5. Dim i2 As Integer = DirectCast(obj(3), Integer) ' 4
    Kläglich gescheitert bist du auch beim Versuch, den Quellcode korrekt formatiert hier einzufügen.
    Schalte den Editor des Forums auf "Quelltext" um und versuchs noch mal.

    Ich hatte auf dieses Problem in der Boarddiskussion schon mal hingewiesen, aber offensichtlich sieht da niemand außer mir Handlungsbedarf ...

    ronaldl schrieb:

    falls doch sage mir bitte wie .

    Hallo?
    Ich sagte: "Stell den Editor des Forums auf Quellcode um"

    Aber wie gesagt. Außer mir sieht wohl niemand den Handlungsbedarf. Da ist es einfacher das ganze immer und immer wieder zu erklären ...
    Bilder
    • Clipboard01.png

      13,52 kB, 327×220, 181 mal angesehen
    'Hier noch mals leserlich..

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Management
    3. Imports System.ComponentModel
    4. Public Class ke
    5. Dim dbu As String = Fotosoft.Label3.Text
    6. Dim dbp As String = Fotosoft.Label4.Text
    7. Dim dbh As String = Fotosoft.Label5.Text
    8. Dim dbd As String = Fotosoft.Label6.Text
    9. Dim wertT As String = ""
    10. Dim wertPp As String = ""
    11. Private WithEvents bgw As New BackgroundWorker
    12. Private Sub ke_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. 'erlaubt zugriff auf die windows form
    14. bgw.WorkerReportsProgress = True
    15. 'erlaubt unterbrechung des bgw z.b. wenn das programm beendet wird
    16. bgw.WorkerSupportsCancellation = True
    17. Label6.Text = ""
    18. Label1.Visible = False
    19. Label2.Visible = False
    20. Label4.Visible = False
    21. Label5.Visible = False
    22. ComboBox1.Visible = False
    23. ComboBox2.Visible = False
    24. RectangleShape1.Visible = False
    25. Button2.Text = "Karten Ordner Wählen"
    26. ' Hauptordner
    27. Dim sql As String = "select * from turniere order by tid desc"
    28. Dim con As New MySqlConnection
    29. Dim cmd As New MySqlCommand(sql, con)
    30. Dim myAdapter As New MySqlDataAdapter
    31. Dim reader As MySqlDataReader
    32. con.ConnectionString = "server='" & dbh & "';" _
    33. & "uid='" & dbu & "';" _
    34. & "pwd='" & dbp & "';" _
    35. & "database='" & dbd & "';"
    36. con.Open()
    37. reader = cmd.ExecuteReader()
    38. Do While reader.Read() 'Jede Reihe durchlaufen
    39. ComboBox1.Items.Add(reader("tid") & " / " _
    40. & reader("tname"))
    41. Loop
    42. reader.Close() 'Reader schliesen
    43. con.Close() 'Connection schliesen
    44. End Sub
    45. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    46. 'prüft ob der bgw noch läuft und beendet diesen dann
    47. 'bedingung - siehe form_load
    48. If bgw.IsBusy Then
    49. bgw.CancelAsync()
    50. End If
    51. End Sub
    52. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    53. Dim fbd As New FolderBrowserDialog
    54. fbd.RootFolder = Environment.SpecialFolder.MyComputer
    55. fbd.ShowNewFolderButton = True
    56. fbd.Description = "Wählen Sie ein Karte aus"
    57. If fbd.ShowDialog() = _
    58. Windows.Forms.DialogResult.OK Then
    59. Else
    60. MsgBox("Abbruch")
    61. End If
    62. Label6.Text = fbd.SelectedPath & "\"
    63. Label1.Visible = True
    64. Label2.Visible = True
    65. Label4.Visible = True
    66. Label5.Visible = True
    67. ComboBox1.Visible = True
    68. ComboBox2.Visible = True
    69. RectangleShape1.Visible = True
    70. End Sub
    71. Public Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    72. ' unterordner
    73. ComboBox2.Items.Clear()
    74. ComboBox2.Text = ""
    75. Dim selectedIndexT As Integer
    76. selectedIndexT = ComboBox1.SelectedIndex
    77. Dim selectedItemT As Object
    78. selectedItemT = ComboBox1.SelectedItem.Split("/").GetValue(0)
    79. Dim wertT As String
    80. wertT = selectedItemT
    81. Dim sqlp As String = "select * from pruefungen where tid = " & wertT & " order by pid desc"
    82. Dim con As New MySqlConnection
    83. Dim cmd As New MySqlCommand(sqlp, con)
    84. Dim myAdapter As New MySqlDataAdapter
    85. Dim reader As MySqlDataReader
    86. con.ConnectionString = "server='" & dbh & "';" _
    87. & "uid='" & dbu & "';" _
    88. & "pwd='" & dbp & "';" _
    89. & "database='" & dbd & "';"
    90. con.Open()
    91. reader = cmd.ExecuteReader()
    92. Do While reader.Read() 'Jede Reihe durchlaufen
    93. ComboBox2.Items.Add(reader("pid") & " / " _
    94. & reader("pname"))
    95. Loop
    96. reader.Close() 'Reader schliesen
    97. con.Close() 'Connection schliesen
    98. End Sub
    99. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    100. bgw.RunWorkerAsync()
    101. End Sub
    102. 'Region "BackGroundWorker Events"
    103. Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgw.DoWork
    104. Dim myFiles() As FileInfo = sourcePath.GetFiles()
    105. 'Array.Sort(myFiles)
    106. Dim AE As Integer
    107. AE = UBound(myFiles) - LBound(myFiles) + 1
    108. Label11.Text = AE.ToString
    109. Dim anz As String = 0
    110. For i As Integer = 0 To AE - 1
    111. myFiles(i).MoveTo(DestinationPath & myFiles(i).ToString)
    112. ProgressBar1.Focus()
    113. ProgressBar1.Maximum = Label11.Text + 1
    114. Application.DoEvents()
    115. ProgressBar1.Value += 1
    116. ProgressBar1.Refresh()
    117. Label10.Focus()
    118. Label10.Text = ProgressBar1.Value / ProgressBar1.Maximum * 100 & " %"
    119. Label10.Refresh()
    120. Label18.Focus()
    121. Label18.Text = ProgressBar1.Value
    122. Label18.Refresh()
    123. Next
    124. Dim DestPath As New DirectoryInfo(Label9.Text)
    125. Dim dmyFiles() As FileInfo = DestPath.GetFiles()
    126. For i As Integer = 0 To dmyFiles.Length - 1
    127. Dim fn0 As String = dmyFiles(i).ToString
    128. Dim fl As Integer = fn0.Length
    129. If fl < 15 Then
    130. Dim fl1 As Integer = fl - 4
    131. Dim fn1 As String = fn0.Substring(4, fl1)
    132. Dim fn2 As String = "IMG_" & wertPp & fn1
    133. Dim fn3 As String = Replace(fn2, " ", "")
    134. Dim fn4 As String = Label9.Text & fn3
    135. If File.Exists(fn4) Then
    136. ' MsgBox(fn4 & " exist")
    137. Else
    138. ' MsgBox(Label9.Text & fn3)
    139. dmyFiles(i).MoveTo(Label9.Text & fn3)
    140. End If
    141. End If
    142. Next
    143. bgw.ReportProgress(100) 'die 100 steht hier für einen prozentsatz
    144. 'oder
    145. 'bgw.ReportProgress(100, "Muss was Ausgeben.") 'im zweiten parameter kann ein objekt übergeben werden
    146. 'End If
    147. End Sub
    148. Private Sub bgw_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgw.ProgressChanged
    149. If ComboBox1.Text = "" Then
    150. MsgBox(" Bitte ein Turnier auswählen ! ")
    151. ElseIf ComboBox2.Text = "" Then
    152. MsgBox(" Bitte ein Prüfung auswählen ! ")
    153. Else
    154. Dim selectedIndexT As Integer
    155. selectedIndexT = ComboBox1.SelectedIndex
    156. Dim selectedItemT As Object
    157. selectedItemT = ComboBox1.SelectedItem.Split("/").GetValue(0)
    158. wertT = selectedItemT
    159. Dim selectedIndexP As Integer
    160. selectedIndexP = ComboBox2.SelectedIndex
    161. Dim selectedItemP As Object
    162. selectedItemP = ComboBox2.SelectedItem.Split("/").GetValue(0)
    163. Dim wertP As String
    164. wertP = selectedItemP
    165. wertPp = Replace(selectedItemP, ".", "")
    166. Dim sourcePath As New DirectoryInfo(Label6.Text)
    167. Dim DestinationPath As String = Label9.Text
    168. End If
    169. End Sub
    170. Private Sub bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgw.RunWorkerCompleted
    171. MsgBox(" Dateien fertig kopiert und unbenannt ! ")
    172. Me.Close()
    173. End Sub
    174. Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
    175. Dim selectedIndexT As Integer
    176. selectedIndexT = ComboBox1.SelectedIndex
    177. Dim selectedItemT As Object
    178. selectedItemT = ComboBox1.SelectedItem.Split("/").GetValue(0)
    179. Dim wertT As String
    180. wertT = selectedItemT
    181. Dim wertT1 As String
    182. wertT1 = wertT.Replace(" ", "")
    183. Dim selectedIndexP As Integer
    184. selectedIndexP = ComboBox2.SelectedIndex
    185. Dim selectedItemP As Object
    186. selectedItemP = ComboBox2.SelectedItem.Split("/").GetValue(0)
    187. Dim wertP As String
    188. wertP = selectedItemP
    189. Dim sourcePath As New DirectoryInfo(Label6.Text)
    190. Dim myFiles() As FileInfo = sourcePath.GetFiles()
    191. 'Array.Sort(myFiles)
    192. Dim AE As Integer
    193. AE = UBound(myFiles) - LBound(myFiles) + 1
    194. Label11.Text = AE.ToString
    195. 'ziellaufwerk destlegen
    196. Dim sqlc As String = "select ppfad from pruefungen where tid = " & wertT1 & " and pid = " & wertP & " "
    197. Dim con1 As New MySqlConnection
    198. Dim cmdc As New MySqlCommand(sqlc, con1)
    199. Dim myAdapter1 As New MySqlDataAdapter
    200. con1.ConnectionString = "server='" & dbh & "';" _
    201. & "uid='" & dbu & "';" _
    202. & "pwd='" & dbp & "';" _
    203. & "database='" & dbd & "';"
    204. Dim tppf As String
    205. con1.Open()
    206. tppf = Convert.ToString(cmdc.ExecuteScalar)
    207. Dim tppf1 As String = Replace(tppf, ".", "\")
    208. Dim tppfn0 As Integer = tppf1.Length
    209. Dim tppfn1 As Integer = tppfn0 - 4
    210. Dim tppf2 As String = tppf1.Substring(0, tppfn1)
    211. Dim tppf3 As String = tppf2 & wertP
    212. Dim wertPp As String = Replace(wertP, ".", "")
    213. Label9.Text = tppf3 & "\"
    214. Dim zl As String = Label9.Text.Substring(0, 1)
    215. Dim al As String = Label6.Text.Substring(0, 1)
    216. con1.Close()
    217. 'Freier Platz ziellaufwerk
    218. Dim fs, platte
    219. fs = CreateObject("Scripting.FileSystemObject")
    220. platte = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(zl)))
    221. Dim free1z As Double = New DriveInfo(zl).AvailableFreeSpace / 1024 / 1024 / 1024
    222. Dim freez As String = (free1z.ToString("00.000")) & " GB sind auf Ziellaufwerk frei "
    223. Label12.Text = freez
    224. Dim meda1 As Double = New DriveInfo(al).AvailableFreeSpace / 1024 / 1024 / 1024
    225. Dim meda2 As Double = New DriveInfo(al).TotalSize / 1024 / 1024 / 1024
    226. Dim meda3 As Double = meda2 - meda1
    227. Dim meda As String = (meda3.ToString("00.000"))
    228. Label13.Text = meda & " GB daten sind auf Karte "
    229. Dim reda1 As Double = free1z - meda3
    230. Dim reda As String = reda1.ToString("00.000")
    231. Label16.Text = reda & " GB sind auf Ziellaufwerk nach einlesen frei"
    232. If meda3 > free1z Then
    233. MsgBox(" Achtung es steht nicht ausreichen Speicherplatz auf dem Server zur Verfügung !! ")
    234. End If
    235. End Sub
    236. End Class


    Edit: 1x in die IDE und zurück by hal2000
    ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    ronaldl schrieb:

    'Hier noch mals leserlich..

    Quellcode-Ansicht UND vb-Tags bitte ;)
    Die Quellcode Ansicht sorgt lediglich dafür, dass Einrückungen und Zeilenumbrüche erhalten bleiben. Komplett richtig wirds aber nur wenn das ganze auch noch in den vb-Tags steht.

    EDIT: Und man kann posts auch EDITIEREN um das ganze "schön" zu machen ...
    @ dodo

    wie mach das ... ich hab mal bei button 1 .click folgendens

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If ComboBox1.Text = "" Then
    3. MsgBox(" Bitte ein Turnier auswählen ! ")
    4. ElseIf ComboBox2.Text = "" Then
    5. MsgBox(" Bitte ein Prüfung auswählen ! ")
    6. Else
    7. Dim selectedIndexT As Integer
    8. selectedIndexT = ComboBox1.SelectedIndex
    9. Dim selectedItemT As Object
    10. selectedItemT = ComboBox1.SelectedItem.Split("/").GetValue(0)
    11. wertT = selectedItemT
    12. Dim selectedIndexP As Integer
    13. selectedIndexP = ComboBox2.SelectedIndex
    14. Dim selectedItemP As Object
    15. selectedItemP = ComboBox2.SelectedItem.Split("/").GetValue(0)
    16. Dim wertP As String
    17. wertP = selectedItemP
    18. wertPp = Replace(selectedItemP, ".", "")
    19. Dim sourcePath As New DirectoryInfo(Label6.Text)
    20. Dim DestinationPath As String = Label9.Text
    21. bgw.RunWorkerAsync()
    22. end sub


    das problem liegt bei sourcePath & DestinationPath die müssen beim bgw.dowork ankommen...


    VB.NET-Quellcode

    1. Dim myFiles() As FileInfo = sourcePath.GetFiles()
    2. 'Array.Sort(myFiles)
    3. Dim AE As Integer
    4. AE = UBound(myFiles) - LBound(myFiles) + 1
    5. Label11.Text = AE.ToString
    6. Dim anz As String = 0
    7. For i As Integer = 0 To AE - 1
    8. myFiles(i).MoveTo(DestinationPath & myFiles(i).ToString)
    9. ......


    das mit dem definieren als object und dem direkcast habe ich irgendwie noch nicht begriffen.

    problem mit dirktcast

    @ dodo

    wie mach das ... ich hab mal bei button 1 .click folgendens

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim sourcePath As New DirectoryInfo(Label6.Text)
    3. Dim DestinationPath As String = Label9.Text
    4. bgw.RunWorkerAsync(New Object() {sourcePath, DestinationPath})
    5. end sub


    unter die objekte haben die korekten werte aber die DirectoryInfo macht problem sei kein string , wie mach das , daß er das richtig annimmt....

    VB.NET-Quellcode

    1. Dim obj As Object() = DirectCast(e.Argument, Object())
    2. Dim sp As New DirectoryInfo(obj(0)) ' der macht mir probeme
    3. Dim dp As String = obj(1).ToString() ' "string"
    4. Dim myFiles() As FileInfo = sp.GetFiles()
    5. 'Array.Sort(myFiles)
    6. Dim AE As Integer
    7. AE = UBound(myFiles) - LBound(myFiles) + 1
    8. Label11.Text = AE.ToString
    9. Dim anz As String = 0
    10. For i As Integer = 0 To AE - 1
    11. myFiles(i).MoveTo(dp & myFiles(i).ToString)......


    das mit dem definieren als object und dem direkcast habe ich irgendwie noch nicht begriffen.
    deklarier einfach zwei variablen in der klasse und lasse die auslesen

    VB.NET-Quellcode

    1. dim var1,var2 as wasauchimmer
    2. Private sub backgroundworker_dowork()
    3. Use var1 and var2

    Fertig...und schon hat man eine schöne lösung gefunden^^
    omg...

    VB.NET-Quellcode

    1. Dim var1, var2 As Integer = 2
    2. Private Event finished(num As Integer)
    3. Private Sub backgroundworker_DoWork()
    4. dim res as integer = 0
    5. res = var1+var2
    6. RaiseEvent finished(res)
    7. End Sub
    8. Private Sub Form_Load()
    9. AddHandler finished, AddressOf finished
    10. End Sub
    11. Sub finished(res as integer)
    12. Me.Text = CStr(res)
    13. End Sub


    glaub mir..das geht^^

    Direktoryinfo und destiopath kommen nicht an

    uch dieZweite lösung geht nicht, es kommen fehlermeldungen, wie bitte übergebe ich directioryinfo an den bgw ??
    ich arbeite sehr vieldamit und brauch die funktion noch für zwei andere classen wer kann mir da helfen ?

    mfg Ronaldl
    Nun er kopiert korrekt die dateien...

    So hab ich jetzt gemacht aber da sind immer 2 Probleme

    das Erste : der Progressbar läuft nicht...

    das Zweite : die Dateien werden nicht unbenannt unter bgw.dowork

    woran liegt das ?


    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim sourcePath As New DirectoryInfo(Label6.Text)
    3. Dim DestinationPath As String = Label9.Text
    4. If ComboBox1.Text = "" Then
    5. MsgBox(" Bitte ein Turnier auswählen ! ")
    6. ElseIf ComboBox2.Text = "" Then
    7. MsgBox(" Bitte ein Prüfung auswählen ! ")
    8. Else
    9. Dim selectedIndexT As Integer
    10. selectedIndexT = ComboBox1.SelectedIndex
    11. Dim selectedItemT As Object
    12. selectedItemT = ComboBox1.SelectedItem.Split("/").GetValue(0)
    13. wertT = selectedItemT
    14. Dim selectedIndexP As Integer
    15. selectedIndexP = ComboBox2.SelectedIndex
    16. Dim selectedItemP As Object
    17. selectedItemP = ComboBox2.SelectedItem.Split("/").GetValue(0)
    18. Dim wertP As String
    19. wertP = selectedItemP
    20. wertPp = Replace(selectedItemP, ".", "")
    21. End If
    22. bgw.RunWorkerAsync(New Object() {sourcePath, DestinationPath, wertPp})
    23. End Sub
    24. 'Region "BackGroundWorker Events"
    25. Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgw.DoWork
    26. Dim obj As Object() = DirectCast(e.Argument, Object())
    27. Dim dp As String = obj(1).ToString() ' "string"
    28. Dim sp As String = obj(0).ToString()
    29. Dim wp As String = obj(2).ToString()
    30. Dim sourcePath As New DirectoryInfo(sp)
    31. Dim DestPath As New DirectoryInfo(dp)
    32. Dim dmyFiles() As FileInfo = DestPath.GetFiles()
    33. For i As Integer = 0 To dmyFiles.Length - 1
    34. Dim fn0 As String = dmyFiles(i).ToString
    35. Dim fl As Integer = fn0.Length
    36. If fl < 15 Then
    37. Dim fl1 As Integer = fl - 4
    38. Dim fn1 As String = fn0.Substring(4, fl1)
    39. Dim fn2 As String = "IMG_" & wp & fn1
    40. Dim fn3 As String = Replace(fn2, " ", "")
    41. Dim fn4 As String = Label9.Text & fn3
    42. If File.Exists(fn4) Then
    43. ' MsgBox(fn4 & " exist")
    44. Else
    45. ' MsgBox(Label9.Text & fn3)
    46. dmyFiles(i).MoveTo(dp & fn3)
    47. End If
    48. End If
    49. Next
    50. bgw.ReportProgress(100) 'die 100 steht hier für einen prozentsatz
    51. 'oder
    52. 'bgw.ReportProgress(100, "Muss was Ausgeben.") 'im zweiten parameter kann ein objekt übergeben werden
    53. 'End If
    54. End Sub
    55. Private Sub bgw_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgw.ProgressChanged
    56. Dim sourcePath As New DirectoryInfo(Label6.Text)
    57. Dim DestinationPath As String = Label9.Text
    58. Dim myFiles() As FileInfo = sourcePath.GetFiles()
    59. AE = UBound(myFiles) - LBound(myFiles) + 1
    60. Label11.Text = AE.ToString
    61. Dim anz As String = 0
    62. For i As Integer = 0 To AE - 1
    63. myFiles(i).MoveTo(DestinationPath & myFiles(i).ToString)
    64. ProgressBar1.Focus()
    65. ProgressBar1.Maximum = AE 'Label11.Text + 1
    66. Application.DoEvents()
    67. ProgressBar1.Value += 1
    68. ProgressBar1.Refresh()
    69. Label10.Focus()
    70. Label10.Text = ProgressBar1.Value / ProgressBar1.Maximum * 100 & " %"
    71. Label10.Refresh()
    72. Label18.Focus()
    73. Label18.Text = ProgressBar1.Value
    74. Label18.Refresh()
    75. Next
    76. 'Dim sourcePath As New DirectoryInfo(Label6.Text)
    77. 'Dim DestinationPath As String = Label9.Text
    78. End Sub
    79. Private Sub bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgw.RunWorkerCompleted
    80. MsgBox(" Dateien fertig kopiert und unbenannt ! ")
    81. Me.Close()
    82. End Sub

    Quellcode

    1. For i As Integer = 0 To dmyFiles.Length - 1


    BTW: Der Code im ReportProgress Event ist irgendwie ziemlich unfugig ...
    1. Grundsätzlich und 2. der Inhalt.
    Label.Focus() ??
    Schleife die Dateien kopiert/verschiebt?

    Irgendwie sieht bei näherer Betrachtung (nicht zu nah, denn SO schön siehts nicht aus) der gesamte Code irgendwie merkwürdig aus ...
    @picoflop

    die zeile gibtdie anzahl aller elemente des arrays zurück, -1weil ein array ja mit index 0 und nicht mit 1 beginnt

    @alive devil

    wer ist mit @TE: gemeint

    und

    wo gehört denn jetzt nun was hin, ich kriegs es nicht auf die kette , wenn ich die schleife in bgw work kopiere kopiert es mir nicht alle dateien, wenn ich sie in bgw_ProgressChanged laufen lasse kopiert er alle dateien aber der balken des Progressbar läuft nicht .

    Kann ich mir bei dem bgw Application.DoEvents() und label10.focus sparen macht er das von allein ?

    auf leitung steh .. und wo ist der Thread übergreifende zugriff ?

    Bitte mal ganz laaaaangsam für mich zum mitschreiben... Vielen dank.