Если я удаляю MsgBox, код не запускается. Как это возможно и как это исправить? - PullRequest
2 голосов
/ 02 ноября 2010

У меня есть код, который использует функциональную совместимость WPF, где у меня есть элемент WPF, который добавляется в качестве пользовательского элемента управления в формах Windows. Я использую WPF для трехмерного просмотра, где динамически добавляю сферу, и она отлично работает, все, что я делаю, это просто отправляю x, y и радиус из формы в WPF, и она рисует сферу. Теперь здесь проблема в том, что я сделал цикл, который читает список координат и рисует их в элементе управления WPF, он отлично работает, если я добавляю пустой MsgBox, но если я удаляю MsgBox, он показывает только последнюю сферу в списке, например,

   For Each obj As Sphere in LstSpheres

        MsgBox("") 'If I remove this the code doesn't work
        CreateSphere(obj.x, obj.y, obj.radius, Brushes.Red) 'This Sub adds the Sphere in WPF Control

    Next

Как это возможно и как это можно исправить?

ОБНОВЛЕНИЕ:

CreateSphere

        Dim S As New Sphere ' a ready made object I took and it doesn't use threaing
        S.Radius = Radius
        S.X = x
        S.Y = y
        S.BrushColor = Color
        My3DViewport3D.Children.Add(S)

Ответы [ 2 ]

1 голос
/ 02 ноября 2010

Мне любопытно, что произойдет, если вы сделаете что-то подобное.

Dim temp As String = ""

For Each obj As Sphere in LstSpheres
    CreateSphere(obj.x, obj.y, obj.radius, Brushes.Red)
    temp &= "[" & My3DViewport3D.Children.Count & "]"
Next

MsgBox(temp)
0 голосов
/ 02 ноября 2010

Мое первое предположение - проблема с потоками? Может быть, остановка кода для окна сообщения дает достаточно времени для завершения последнего CreateSphere?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...