Property von einem anderen thread aus einer anderen Klasse auslesen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von 00yoshi.

    Property von einem anderen thread aus einer anderen Klasse auslesen

    Ich würde gerne eine Property von nem anderem Thread in einer anderen Klasse auslesen.
    Zurzeit habe ich:

    VB.NET-Quellcode

    1. Class Main
    2. Dim Chunk As New Dictionary(Of Vector2,Chunk)
    3. Function GetBlock(Position As Vector2) As Block
    4. Dim ChunkPos As Vector2 = New Vector2(CSng(Math.Floor(Position.X / 16)), CSng(Math.Floor(Position.Y / 16)))
    5. If Position.X > 4095 Or Position.X < 0 Then
    6. Throw New ArgumentOutOfRangeException("Position", "Out of Range(0-4095). X:" & Position.X)
    7. End If
    8. If Position.Y > 4095 Or Position.Y < 0 Then
    9. Throw New ArgumentOutOfRangeException("Position", "Out of Range(0-4095). Y:" & Position.Y)
    10. End If
    11. If Chunk.ContainsKey(ChunkPos) Then Return Chunk(ChunkPos).Blocks(Position.X Mod 16, Position.Y Mod 16) Else Throw New Exception("Block not loaded")
    12. Return New Block(Position)
    13. End Function
    14. Private Sub ChunkThread_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles ChunkThread.DoWork
    15. LoadChunks()
    16. UnloadChunks()
    17. Test.T()
    18. Dim f = GetBlock(New Vector2(2048, 2048)) ' Klappt
    19. For Each C As Chunk In Chunk.Values.ToArray
    20. C.Tick()
    21. Next
    22. End Sub
    23. Class Test
    24. Shared Sub T()
    25. Dim f = Main.GetBlock(New Vector2(2048, 2048)) ' Klappt nicht
    26. End Sub
    27. End Class
    28. End Class
    *seufz* :(

    Tipps für eine höhere Antwort-Quote
    2. Problembeschreibung

    2.1 Was habe ich vor?

    Schildere so kurz und genau wie möglich, was du vor hast und was du erreichen willst, um den Zusammenhang besser verstehen zu können. Denke daran, dass zu viel Text
    auf andere erdrückend wirkt und somit die Gefahr besteht, dass einige
    User den Text einfach überfliegen/überspringen, deshalb so kurz und
    genau wie möglich!

    2.2 Was ist das Problem?

    Beschreibe so ausführlich wie möglich das Problem. Unbedingt genannt werden müssen:

    Fehlermeldungen (ein "geht nicht" reicht nicht aus!)

    der verwendete Quelltextausschnitt (nicht den gesamten Quelltext!)

    die Zeile, in der dieser Fehler auftritt


    edit: Ups ! Habe die, wenn auch kleine, Kommentierung nicht gesehen. :whistling:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „timonator“ ()

    00yoshi schrieb:

    in einer anderen Klasse auslesen.
    Wo ist das Problem?

    00yoshi schrieb:

    VB.NET-Quellcode

    1. If Chunk.ContainsKey(ChunkPos) Then Return Chunk(ChunkPos).Blocks(Position.X Mod 16, Position.Y Mod 16) Else Throw New Exception("Block not loaded")
    machst Du dies:

    VB.NET-Quellcode

    1. If Not Chunk.ContainsKey(ChunkPos) Then
    2. Throw New InvalidArgumentException("Block not loaded")
    3. End If
    4. Return Chunk(ChunkPos).Blocks(Position.X Mod 16, Position.Y Mod 16)

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    00yoshi schrieb:

    chunk.count = 0 ist sonst 25
    Da greifst Du wohl auf verschiedene Instanzen zu.

    00yoshi schrieb:

    unterschied
    Einer wegen Else, den anderen findest Du selber.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!