我有一个使用WPF互操作性的代码,其中我有WPF项目,在Windows窗体中作为用户控件添加。我使用WPF进行3D视图,其中我动态添加一个球体并且它工作正常,我所做的只是将x,y和半径从表单发送到WPF并绘制球体。 现在这里是问题我做了一个循环,读取coords列表并在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)
答案 0 :(得分:1)
我很好奇如果你这样做会发生什么。
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)
答案 1 :(得分:0)
我的第一个猜测是线程问题?也许停止消息框代码的行为可以让最后一个CreateSphere有足够的时间来完成?