Programm friert ein.help?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    Programm friert ein.help?

    hi!
    Isch schreib gradn kleines prog.....wenn es viel zu tun bekommt friert es ein oder im debugging mode von VB2005 Express Edition kommt die Meldung:
    ContextSwitchDeadlock was detected
    Message:
    The CLR has been unable to transition from COM context 0x1b0f50 to COM context 0x1b10c0 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.
    -------------
    Kann mir einer von euch helfen?

    Greetz Malte

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Runtime.InteropServices
    3. Public Class Form2
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Me.FolderBrowserDialog1.ShowDialog()
    6. End Sub
    7. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    8. Me.ProgressBar1.Visible = True
    9. Me.ListBox1.Visible = True
    10. Me.Button1.Enabled = False
    11. Me.Button2.Text = "In Arbeit..."
    12. Me.Button2.Enabled = False
    13. Me.Button3.Enabled = False
    14. Dim mypath = Me.FolderBrowserDialog1.SelectedPath
    15. Me.BringToFront()
    16. Me.ListBox1.Items.Add("*Dateien unbenannt:*")
    17. For Each foundFiles2 As String In _
    18. My.Computer.FileSystem.GetFiles(mypath, FileIO.SearchOption.SearchAllSubDirectories)
    19. Dim entpatht22 = My.Computer.FileSystem.GetFileInfo(foundFiles2).Name
    20. Dim allF = My.Computer.FileSystem.GetFiles(mypath, FileIO.SearchOption.SearchAllSubDirectories).Count
    21. Dim MyF = MyF + 1
    22. Dim name122 = entpatht22.replace("A", "a")
    23. Dim name222 = name122.replace("B", "b")
    24. Dim name322 = name222.replace("C", "c")
    25. Dim name422 = name322.replace("D", "d")
    26. Dim name522 = name422.replace("E", "e")
    27. Dim name622 = name522.replace("F", "f")
    28. Dim name722 = name622.replace("G", "g")
    29. Dim name822 = name722.replace("H", "h")
    30. Dim name922 = name822.replace("I", "i")
    31. Dim name1022 = name922.replace("J", "j")
    32. Dim name1122 = name1022.replace("K", "k")
    33. Dim name1222 = name1122.replace("L", "l")
    34. Dim name1322 = name1222.replace("M", "m")
    35. Dim name1422 = name1322.replace("N", "n")
    36. Dim name1522 = name1422.replace("O", "o")
    37. Dim name1622 = name1522.replace("P", "p")
    38. Dim name1722 = name1622.replace("Q", "q")
    39. Dim name1822 = name1722.replace("R", "r")
    40. Dim name1922 = name1822.replace("S", "s")
    41. Dim name2022 = name1922.replace("T", "t")
    42. Dim name2122 = name2022.replace("U", "u")
    43. Dim name2222 = name2122.replace("V", "v")
    44. Dim name2322 = name2222.replace("W", "w")
    45. Dim name2422 = name2322.replace("X", "x")
    46. Dim name2522 = name2422.replace("Y", "y")
    47. Dim newFile = name2522.replace("Z", "z")
    48. My.Computer.FileSystem.RenameFile(foundFiles2, newFile & "1")
    49. My.Computer.FileSystem.RenameFile(foundFiles2 & "1", newFile)
    50. If MyF = allF Then
    51. Me.Label6.Text = "READY"
    52. Else
    53. Me.Refresh()
    54. End If
    55. Me.ListBox1.Items.Add(foundFiles2)
    56. Next
    57. If Me.Label6.Text = "READY" Then
    58. Me.ListBox1.Items.Add("*Ordner unbenannt:*")
    59. For Each founddir As String In _
    60. My.Computer.FileSystem.GetDirectories(mypath, FileIO.SearchOption.SearchAllSubDirectories)
    61. Dim entpatht2 = My.Computer.FileSystem.GetDirectoryInfo(founddir).Name
    62. Dim allD = My.Computer.FileSystem.GetFiles(mypath, FileIO.SearchOption.SearchAllSubDirectories).Count
    63. Dim MyD = MyD + 1
    64. Dim name12 = entpatht2.replace("A", "a")
    65. Dim name22 = name12.replace("B", "b")
    66. Dim name32 = name22.replace("C", "c")
    67. Dim name42 = name32.replace("D", "d")
    68. Dim name52 = name42.replace("E", "e")
    69. Dim name62 = name52.replace("F", "f")
    70. Dim name72 = name62.replace("G", "g")
    71. Dim name82 = name72.replace("H", "h")
    72. Dim name92 = name82.replace("I", "i")
    73. Dim name102 = name92.replace("J", "j")
    74. Dim name112 = name102.replace("K", "k")
    75. Dim name122 = name112.replace("L", "l")
    76. Dim name132 = name122.replace("M", "m")
    77. Dim name142 = name132.replace("N", "n")
    78. Dim name152 = name142.replace("O", "o")
    79. Dim name162 = name152.replace("P", "p")
    80. Dim name172 = name162.replace("Q", "q")
    81. Dim name182 = name172.replace("R", "r")
    82. Dim name192 = name182.replace("S", "s")
    83. Dim name202 = name192.replace("T", "t")
    84. Dim name212 = name202.replace("U", "u")
    85. Dim name222 = name212.replace("V", "v")
    86. Dim name232 = name222.replace("W", "w")
    87. Dim name242 = name232.replace("X", "x")
    88. Dim name252 = name242.replace("Y", "y")
    89. Dim newdir = name252.replace("Z", "z")
    90. My.Computer.FileSystem.RenameDirectory(founddir, entpatht2 & "1")
    91. My.Computer.FileSystem.RenameDirectory(founddir & "1", newdir)
    92. If MyD = allD Then
    93. Me.Label5.Text = "READY"
    94. Else
    95. Me.Refresh()
    96. End If
    97. Me.ListBox1.Items.Add(founddir)
    98. Next
    99. End If
    100. If Me.Label5.Text = "READY" And Me.Label6.Text = "READY" Then
    101. Me.Hide()
    102. My.Forms.Form3.Show()
    103. End If
    104. End Sub
    105. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    106. My.Forms.Form1.Close()
    107. Me.Close()
    108. End Sub
    109. End Class
    Ich kenn mich zwar mit .net nicht so aus, aber ich könnte mir vorstellen, das bei der For Each Schleife bei jedem Durchlauf die GetDirectories Methode ausgeführt wird. Vielleicht einfach vorher in ein Array packen und dann dieses Array durchlaufen. Zumal finde ich es sehr unsauber, wie du die Großbuchstaben in klein umwandelst. Hier legst du gleich 25 Strings an und außerdem gibt es sicher auch eine LCase Funktion wie in VB6. Das alles summiert sich zusammen und könnte deine Fehlermeldung erklären, dass dein Programm sich aufhängt.
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau