Imports System Imports System.Collections Imports System.ComponentModel Imports System.Drawing Imports System.Threading Imports System.Windows.Forms Imports System.Math Public Class Planet1Form Inherits System.Windows.Forms.Form ' 23-12-2010 First Release - Copied from Planet ' 23-12-2010 Holdst (state) and Holdrev (Revolution) added - See StartAsyncButton Private WithEvents startAsyncButton As System.Windows.Forms.Button Private WithEvents cancelAsyncButton As System.Windows.Forms.Button Private WithEvents endAsyncButton As System.Windows.Forms.Button Private WithEvents MonitorButton As System.Windows.Forms.Button Private WithEvents backgroundWorkerpp1 As System.ComponentModel.BackgroundWorker Private WithEvents backgroundWorkerpp2 As System.ComponentModel.BackgroundWorker Private WithEvents backgroundWorkerpp3 As System.ComponentModel.BackgroundWorker Private WithEvents backgroundWorkerpp4 As System.ComponentModel.BackgroundWorker Private WithEvents backgroundWorkerpp5 As System.ComponentModel.BackgroundWorker Private StateL As System.Windows.Forms.Label Private ProcL, nProcL, tdeltaL, seccntL, nplL As System.Windows.Forms.Label Private Label1, Label2, Label3(2), Label4, Label5, Label6 As System.Windows.Forms.Label Private ResultLabelpp1, ResultLabelpp2, ResultLabelpp3, ResultLabelpp4, ResultLabelpp5 As System.Windows.Forms.Label Private StateTpp1, StateTpp2, StateTpp3, StateTpp4, StateTpp5 As System.Windows.Forms.TextBox Private ProcTpp1, ProcTpp2, ProcTpp3, ProcTpp4, ProcTpp5 As System.Windows.Forms.TextBox Private nProcT, tdeltaT, seccntT, nplT As System.Windows.Forms.TextBox Private x1T, x2T, x3T, x4T As System.Windows.Forms.TextBox Private y1T, y2T, y3T, y4T As System.Windows.Forms.TextBox Private r1T, r2T, r3T, r4T As System.Windows.Forms.TextBox Private pl1T, pl2T, pl3T, pl4T As System.Windows.Forms.TextBox Private rev1T, rev2T, rev3T, rev4T As System.Windows.Forms.TextBox Private hh, dhh, dd, ddd As Integer Public x(idim), y(idim), z(idim) Public vx(idim), vy(idim), vz(idim) Public ax(idim), ay(idim), az(idim) Public Rev(idim) As Integer ' revolution counter Public pl_itercnt(idim) As Integer ' iteration counter per planet Public m(idim) Public itercnt(5), seccnt(5) Public np, lnp, nplanets, nplanetsl, holdst, holdrev As Integer Public state(5) As Integer Const StartSt As Integer = 1, ActiveSt As Integer = 2, StopSt As Integer = 0, CancelSt As Integer = 3, Endst = 0 Const StartSt1 As Integer = 4 Const idim As Integer = 100 Public dt, dtl As Single ' delta t Public Sub New() InitializeComponent() InitializeForm() End Sub 'New Private Sub startAsyncButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startAsyncButton.Click Dim mesg, answer As String If holdst = 1 Then holdst = 0 Exit Sub End If If backgroundWorkerpp1.IsBusy <> True Then mesg = "Enter Hold Revolution" answer = InputBox(mesg, "Hold rev", "-1") holdrev = Val(answer) ' Start the asynchronous operation. backgroundWorkerpp1.RunWorkerAsync() np = 1 ProcTpp1.Text = 1 ResultLabelpp1.Text = " " ResultLabelpp2.Text = " " ResultLabelpp3.Text = " " ResultLabelpp4.Text = " " ResultLabelpp5.Text = " " Else If backgroundWorkerpp2.IsBusy <> True Then ' Start the asynchronous operation. backgroundWorkerpp2.RunWorkerAsync() np = 2 ProcTpp2.Text = 2 Else If backgroundWorkerpp3.IsBusy <> True Then ' Start the asynchronous operation. backgroundWorkerpp3.RunWorkerAsync() np = 3 ProcTpp3.Text = 3 Else If backgroundWorkerpp4.IsBusy <> True Then ' Start the asynchronous operation. backgroundWorkerpp4.RunWorkerAsync() np = 4 ProcTpp4.Text = 4 Else If backgroundWorkerpp5.IsBusy <> True Then ' Start the asynchronous operation. backgroundWorkerpp5.RunWorkerAsync() np = 5 ProcTpp5.Text = 5 End If End If End If End If End If NProcT.Text = np For i = 0 To 5 itercnt(i) = -1 : seccnt(i) = -1 Next End Sub Private Sub cancelAsyncButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cancelAsyncButton.Click If holdst > 0 Then holdst = 0 If np = 0 Then Exit Sub ' Update control panel If np = 1 Then ProcTpp1.Text = " " Else If np = 2 Then ProcTpp2.Text = " " Else If np = 3 Then ProcTpp3.Text = " " Else If np = 4 Then ProcTpp4.Text = " " Else ProcTpp5.Text = " " End If End If End If End If np = np - 1 NProcT.Text = np For i = 0 To 5 itercnt(i) = -1 : seccnt(i) = -1 Next End Sub Private Sub EndSyncButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles endAsyncButton.Click If holdst > 0 Then holdst = 0 If np > 0 Then Debug.Print("Click End" + Str(np)) np = -1 ' np end state Else Test() Debug.Print("Click End - no Error") End End If End Sub Private Sub MonitorButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MonitorButton.Click StateTpp1.Text = state(1) StateTpp2.Text = state(2) StateTpp3.Text = state(3) StateTpp4.Text = state(4) StateTpp5.Text = state(5) End Sub ' This event handler 1 is where the time-consuming work is done. Private Sub backgroundWorker1_DoWork(ByVal sender As System.Object, _ ByVal e As DoWorkEventArgs) Handles backgroundWorkerpp1.DoWork Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) Dim i, j, pstr As Integer Dim sec1, sec2 As Integer Dim dx, dy, dz, r2, r, a, ynew As Double Dim b As String sec1 = Second(Now) pstr = 0 ' Processor start = 1-1 holdst = 0 b = tdeltaT.Text : dt = Val(b) ' Delta t If dt = 0 Then dt = 0.02 b = nplT.Text : nplanets = Val(b) If nplanets < 1 Then nplanets = 1 If nplanets > idim Then nplanets = idim Debug.Print("PP1 Load " + Str(1) + " dt = " + Str(dt)) Init() Do ' If pl_itercnt(0) Mod 10000 = 0 Then Debug.Print(Str(pl_itercnt(0)) + " x" + Str(x(1)) + Str(y(1)) + " v" + Str(vx(1)) + Str(vy(1)) + " a" + Str(ax(1)) + Str(ay(1)) + Str(az(1))) If Rev(1) = holdrev Then ' Hold holdst = 1 worker.ReportProgress(-1) holdrev = -1 End If If holdst = 1 Then System.Threading.Thread.Sleep(1) GoTo loop1 End If itercnt(1) = itercnt(1) + 1 If np = -1 Then ' end state If lnp > 0 Then state(lnp) = CancelSt lnp = lnp - 1 Else np = 0 Debug.Print("PP1 End") End End If Else If np < lnp Then state(lnp) = CancelSt End If lnp = np ' make local - Only P1 End If If lnp > 1 Then state(2) = StartSt ' Start P1 If lnp > 2 Then state(3) = StartSt ' start p2 If lnp > 3 Then state(4) = StartSt ' Start P3 If lnp > 4 Then state(5) = StartSt ' Start P3 If lnp > 0 Then For i = pstr To nplanets Step lnp ax(i) = 0 : ay(i) = 0 : az(i) = 0 For j = 0 To nplanets If i <> j Then dx = x(i) - x(j) : dy = y(i) - y(j) : dz = z(i) - z(j) r2 = (dx * dx + dy * dy + dz * dz) : r = Sqrt(r2) a = m(j) / (r2 * r) ax(i) = ax(i) + a * dx ay(i) = ay(i) + a * dy az(i) = az(i) + a * dz End If Next vx(i) = vx(i) - ax(i) * dt vy(i) = vy(i) - ay(i) * dt vz(i) = vz(i) - az(i) * dt Next End If If lnp > 1 Then Do Loop Until state(2) = StopSt And state(3) = StopSt And state(4) = StopSt And state(5) = StopSt End If If lnp > 1 Then state(2) = StartSt1 ' Start P1 If lnp > 2 Then state(3) = StartSt1 ' start p2 If lnp > 3 Then state(4) = StartSt1 ' Start P3 If lnp > 4 Then state(5) = StartSt1 ' Start P3 If lnp > 0 Then For i = pstr To nplanets Step lnp x(i) = x(i) + vx(i) * dt ynew = y(i) + vy(i) * dt If y(i) < 0 And ynew > 0 Then Rev(i) = Rev(i) + 1 y(i) = ynew z(i) = z(i) + vz(i) * dt pl_itercnt(i) = pl_itercnt(i) + 1 Next End If If lnp > 1 Then Do Loop Until state(2) = StopSt And state(3) = StopSt And state(4) = StopSt And state(5) = StopSt ' Test() End If If state(1) = CancelSt Then e.Cancel = True state(1) = Endst Debug.Print("PP1 Cancelst " + Str(state(1))) Exit Sub Else ' Perform a time consuming operation and report progress. sec2 = Second(Now) If sec2 <> sec1 Then System.Threading.Thread.Sleep(1) sec1 = Second(Now) seccnt(1) = seccnt(1) + 1 If seccnt(1) <= 0 Then itercnt(1) = 0 worker.ReportProgress(0) Else worker.ReportProgress(itercnt(1) / seccnt(1)) End If 'cnt = 0 End If End If Loop1: Loop End Sub ' This event handler 1 updates the progress. Private Sub backgroundWorkerpp1_ProgressChanged(ByVal sender As System.Object, _ ByVal e As ProgressChangedEventArgs) Handles backgroundWorkerpp1.ProgressChanged Dim pl As Integer Dim r As Double If holdst = 0 Then ResultLabelpp1.Text = (e.ProgressPercentage.ToString()) End If seccntT.Text = Str(seccnt(1)) If dt <> dtl Then tdeltaT.Text = dt ' delta t dtl = dt End If If nplanets <> nplanetsl Then nplT.Text = nplanets ' n of planets nplanetsl = nplanets End If pl = Val(pl1T.Text) If pl < 0 Then pl = 0 x1T.Text = Str(Int(x(pl))) y1T.Text = Str(Int(y(pl))) r = Sqrt(x(pl) * x(pl) + y(pl) * y(pl)) r1T.Text = r rev1T.Text = Str(Rev(pl)) pl = Val(pl2T.Text) If pl < 0 Then pl = 0 x2T.Text = Str(Int(x(pl))) y2T.Text = Str(Int(y(pl))) r = Sqrt(x(pl) * x(pl) + y(pl) * y(pl)) r2T.Text = r rev2T.Text = Str(Rev(pl)) pl = Val(pl3T.Text) If pl < 0 Then pl = 0 x3T.Text = Str(Int(x(pl))) y3T.Text = Str(Int(y(pl))) r = Sqrt(x(pl) * x(pl) + y(pl) * y(pl)) r3T.Text = r rev3T.Text = Str(Rev(pl)) pl = Val(pl4T.Text) If pl < 0 Then pl = 0 x4T.Text = Str(Int(x(pl))) y4T.Text = Str(Int(y(pl))) r = Sqrt(x(pl) * x(pl) + y(pl) * y(pl)) r4T.Text = r rev4T.Text = Str(Rev(pl)) End Sub ' This event handler 1 deals with the results of the background operation. Private Sub backgroundWorkerpp1_RunWorkerCompleted(ByVal sender As System.Object, _ ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorkerpp1.RunWorkerCompleted If e.Cancelled = True Then ResultLabelpp1.Text = "Canceled!" ElseIf e.Error IsNot Nothing Then ResultLabelpp1.Text = "Error: " & e.Error.Message Else ResultLabelpp1.Text = "Done!" End If End Sub ' This event handler 2 is where the time-consuming work is done. Private Sub backgroundWorkerpp2_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles backgroundWorkerpp2.DoWork Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) Dim i, j, pstr As Integer Dim sec1, sec2 As Integer Dim dx, dy, dz, r2, r, a, ynew As Double sec1 = Second(Now) pstr = 1 Debug.Print("PP2 Load " + Str(2)) Do If holdst = 1 Then System.Threading.Thread.Sleep(1) GoTo loop1 End If itercnt(2) = itercnt(2) + 1 If state(2) = StartSt Then state(2) = ActiveSt For i = pstr To nplanets Step lnp ax(i) = 0 : ay(i) = 0 : az(i) = 0 For j = 0 To nplanets If i <> j Then dx = x(i) - x(j) : dy = y(i) - y(j) : dz = z(i) - z(j) r2 = (dx * dx + dy * dy + dz * dz) : r = Sqrt(r2) a = m(j) / (r2 * r) ax(i) = ax(i) - a * dx ay(i) = ay(i) - a * dy az(i) = az(i) - a * dz End If Next vx(i) = vx(i) + ax(i) * dt vy(i) = vy(i) + ay(i) * dt vz(i) = vz(i) + az(i) * dt Next state(2) = StopSt End If If state(2) = StartSt1 Then state(2) = ActiveSt For i = pstr To nplanets Step lnp x(i) = x(i) + vx(i) * dt ynew = y(i) + vy(i) * dt If y(i) < 0 And ynew > 0 Then Rev(i) = Rev(i) + 1 y(i) = ynew z(i) = z(i) + vz(i) * dt pl_itercnt(i) = pl_itercnt(i) + 1 Next state(2) = StopSt End If ' If (worker.CancellationPending = True) Or state(2) = CancelSt Then If state(2) = CancelSt Then e.Cancel = True state(2) = Endst Debug.Print("PP2 Cancelst " + Str(state(2))) Exit Sub Else sec2 = Second(Now) If sec2 <> sec1 Then System.Threading.Thread.Sleep(1) sec1 = Second(Now) seccnt(2) = seccnt(2) + 1 If seccnt(2) <= 0 Then itercnt(2) = 0 worker.ReportProgress(0) Else worker.ReportProgress(itercnt(2) / seccnt(2)) End If End If End If loop1: Loop End Sub ' This event handler 2 updates the progress. Private Sub backgroundWorkerpp2_ProgressChanged(ByVal sender As System.Object, _ ByVal e As ProgressChangedEventArgs) Handles backgroundWorkerpp2.ProgressChanged ResultLabelpp2.Text = (e.ProgressPercentage.ToString()) End Sub ' This event handler 2 deals with the results of the background operation. Private Sub backgroundWorkerpp2_RunWorkerCompleted(ByVal sender As System.Object, _ ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorkerpp2.RunWorkerCompleted If e.Cancelled = True Then ResultLabelpp2.Text = "Canceled!" ElseIf e.Error IsNot Nothing Then ResultLabelpp2.Text = "Error: " & e.Error.Message Else ResultLabelpp2.Text = "Done!" End If End Sub ' This event handler 3 is where the time-consuming work is done. Private Sub backgroundWorkerpp3_DoWork(ByVal sender As System.Object, _ ByVal e As DoWorkEventArgs) Handles backgroundWorkerpp3.DoWork Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) Dim i, j, pstr As Integer Dim sec1, sec2 As Integer Dim dx, dy, dz, r2, r, a, ynew As Double sec1 = Second(Now) pstr = 2 Debug.Print("PP3 Load " + Str(3)) Do If holdst = 1 Then System.Threading.Thread.Sleep(1) GoTo loop1 End If itercnt(3) = itercnt(3) + 1 If state(3) = StartSt Then state(3) = ActiveSt For i = pstr To nplanets Step lnp ax(i) = 0 : ay(i) = 0 : az(i) = 0 For j = 0 To nplanets If i <> j Then dx = x(i) - x(j) : dy = y(i) - y(j) : dz = z(i) - z(j) r2 = (dx * dx + dy * dy + dz * dz) : r = Sqrt(r2) a = m(j) / (r2 * r) ax(i) = ax(i) - a * dx ay(i) = ay(i) - a * dy az(i) = az(i) - a * dz End If Next vx(i) = vx(i) + ax(i) * dt vy(i) = vy(i) + ay(i) * dt vz(i) = vz(i) + az(i) * dt Next state(3) = StopSt End If If state(3) = StartSt1 Then state(3) = ActiveSt For i = pstr To nplanets Step lnp x(i) = x(i) + vx(i) * dt ynew = y(i) + vy(i) * dt If y(i) < 0 And ynew > 0 Then Rev(i) = Rev(i) + 1 y(i) = ynew z(i) = z(i) + vz(i) * dt pl_itercnt(i) = pl_itercnt(i) + 1 Next state(3) = StopSt End If If state(3) = CancelSt Then e.Cancel = True state(3) = Endst Debug.Print("PP3 Cancelst " + Str(state(3))) Exit Sub Else sec2 = Second(Now) If sec2 <> sec1 Then System.Threading.Thread.Sleep(1) sec1 = Second(Now) seccnt(3) = seccnt(3) + 1 If seccnt(3) <= 0 Then itercnt(3) = 0 worker.ReportProgress(0) Else worker.ReportProgress(itercnt(3) / seccnt(3)) End If End If End If loop1: Loop End Sub ' This event handler 3 updates the progress. Private Sub backgroundWorkerpp3_ProgressChanged(ByVal sender As System.Object, _ ByVal e As ProgressChangedEventArgs) Handles backgroundWorkerpp3.ProgressChanged ResultLabelpp3.Text = (e.ProgressPercentage.ToString()) End Sub ' This event handler 3 deals with the results of the background operation. Private Sub backgroundWorkerpp3_RunWorkerCompleted(ByVal sender As System.Object, _ ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorkerpp3.RunWorkerCompleted If e.Cancelled = True Then ResultLabelpp3.Text = "Canceled!" ElseIf e.Error IsNot Nothing Then ResultLabelpp3.Text = "Error: " & e.Error.Message Else ResultLabelpp3.Text = "Done!" End If End Sub ' This event handler 4 is where the time-consuming work is done. Private Sub backgroundWorkerpp4_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles backgroundWorkerpp4.DoWork Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) Dim i, j, pstr As Integer Dim sec1, sec2 As Integer Dim dx, dy, dz, r2, r, a, ynew As Double sec1 = Second(Now) Debug.Print("PP4 Load " + Str(4)) pstr = 3 Do If holdst = 1 Then System.Threading.Thread.Sleep(1) GoTo loop1 End If itercnt(4) = itercnt(4) + 1 If state(4) = StartSt Then state(4) = ActiveSt For i = pstr To nplanets Step lnp ax(i) = 0 : ay(i) = 0 : az(i) = 0 For j = 0 To nplanets If i <> j Then dx = x(i) - x(j) : dy = y(i) - y(j) : dz = z(i) - z(j) r2 = (dx * dx + dy * dy + dz * dz) : r = Sqrt(r2) a = m(j) / (r2 * r) ax(i) = ax(i) - a * dx ay(i) = ay(i) - a * dy az(i) = az(i) - a * dz End If Next vx(i) = vx(i) + ax(i) * dt vy(i) = vy(i) + ay(i) * dt vz(i) = vz(i) + az(i) * dt Next state(4) = StopSt End If If state(4) = StartSt1 Then state(4) = ActiveSt For i = pstr To nplanets Step lnp x(i) = x(i) + vx(i) * dt ynew = y(i) + vy(i) * dt If y(i) < 0 And ynew > 0 Then Rev(i) = Rev(i) + 1 y(i) = ynew z(i) = z(i) + vz(i) * dt pl_itercnt(i) = pl_itercnt(i) + 1 Next state(4) = StopSt End If If state(4) = CancelSt Then e.Cancel = True state(4) = Endst Debug.Print("PP4 Cancelst " + Str(state(4))) Exit Sub Else sec2 = Second(Now) If sec2 <> sec1 Then System.Threading.Thread.Sleep(1) sec1 = Second(Now) seccnt(4) = seccnt(4) + 1 If seccnt(4) <= 0 Then itercnt(4) = 0 worker.ReportProgress(0) Else worker.ReportProgress(itercnt(4) / seccnt(4)) End If End If End If loop1: Loop End Sub ' This event handler 4 updates the progress. Private Sub backgroundWorkerpp4_ProgressChanged(ByVal sender As System.Object, _ ByVal e As ProgressChangedEventArgs) Handles backgroundWorkerpp4.ProgressChanged ResultLabelpp4.Text = (e.ProgressPercentage.ToString()) End Sub ' This event handler 4 deals with the results of the background operation. Private Sub backgroundWorkerpp4_RunWorkerCompleted(ByVal sender As System.Object, _ ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorkerpp4.RunWorkerCompleted If e.Cancelled = True Then ResultLabelpp4.Text = "Canceled!" ElseIf e.Error IsNot Nothing Then ResultLabelpp4.Text = "Error: " & e.Error.Message Else ResultLabelpp4.Text = "Done!" End If End Sub ' This event handler 5 is where the time-consuming work is done. Private Sub backgroundWorkerpp5_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles backgroundWorkerpp5.DoWork Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) Dim i, j, pstr As Integer Dim sec1, sec2 As Integer Dim dx, dy, dz, r2, r, a As Double sec1 = Second(Now) Debug.Print("PP5 Load " + Str(5)) pstr = 4 Do If holdst = 1 Then System.Threading.Thread.Sleep(1) GoTo loop1 End If itercnt(5) = itercnt(5) + 1 If state(5) = StartSt Then state(5) = ActiveSt For i = pstr To nplanets Step lnp ax(i) = 0 : ay(i) = 0 : az(i) = 0 For j = 0 To nplanets If i <> j Then dx = x(i) - x(j) : dy = y(i) - y(j) : dz = z(i) - z(j) r2 = (dx * dx + dy * dy + dz * dz) : r = Sqrt(r2) a = m(j) / (r2 * r) ax(i) = ax(i) - a * dx ay(i) = ay(i) - a * dy az(i) = az(i) - a * dz End If Next vx(i) = vx(i) + ax(i) * dt vy(i) = vy(i) + ay(i) * dt vz(i) = vz(i) + az(i) * dt Next state(5) = StopSt End If If state(5) = StartSt1 Then state(5) = ActiveSt For i = pstr To nplanets Step lnp x(i) = x(i) + vx(i) * dt y(i) = y(i) + vy(i) * dt z(i) = z(i) + vz(i) * dt pl_itercnt(i) = pl_itercnt(i) + 1 Next state(5) = StopSt End If If state(5) = CancelSt Then e.Cancel = True state(5) = Endst Debug.Print("pp5 Cancelst " + Str(state(5))) Exit Sub Else sec2 = Second(Now) If sec2 <> sec1 Then System.Threading.Thread.Sleep(1) sec1 = Second(Now) seccnt(5) = seccnt(5) + 1 If seccnt(5) <= 0 Then itercnt(5) = 0 worker.ReportProgress(0) Else worker.ReportProgress(itercnt(5) / seccnt(5)) End If End If End If loop1: Loop End Sub ' This event handler 5 updates the progress. Private Sub backgroundWorkerpp5_ProgressChanged(ByVal sender As System.Object, _ ByVal e As ProgressChangedEventArgs) Handles backgroundWorkerpp5.ProgressChanged ResultLabelpp5.Text = (e.ProgressPercentage.ToString()) End Sub ' This event handler 5 deals with the results of the background operation. Private Sub backgroundWorkerpp5_RunWorkerCompleted(ByVal sender As System.Object, _ ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorkerpp5.RunWorkerCompleted If e.Cancelled = True Then ResultLabelpp5.Text = "Canceled!" ElseIf e.Error IsNot Nothing Then ResultLabelpp5.Text = "Error: " & e.Error.Message Else ResultLabelpp5.Text = "Done!" End If End Sub Private Sub Init() Dim i As Integer For i = 0 To idim x(i) = 0 : y(i) = 0 : z(i) = 0 vx(i) = 0 : vy(i) = 0 : vz(i) = 0 ax(i) = 0 : ay(i) = 0 : az(i) = 0 pl_itercnt(i) = 0 Rev(i) = 0 ' Revolution counter Next m(0) = 1000 For i = 1 To nplanets m(i) = 0 x(i) = 1000 + (i - 1) * 100 If x(i) <> 0 Then vy(i) = Sqrt(m(0) / x(i)) Next Printa(x, Str(pl_itercnt(0)) + " x") Printa(vy, Str(pl_itercnt(0)) + " vy") End Sub Private Sub Test() Dim a As String Dim i, j As Integer For i = 0 To nplanets - 1 If pl_itercnt(i) <> pl_itercnt(i + 1) Then a = "Test error j " For j = 0 To nplanets a = a + Str(j) + " pl_itercnt(j) " + Str(pl_itercnt(j)) + " " Next j Debug.Print(a) End End If Next i End Sub Private Sub Printa(ByVal xp(), ByVal str1) Dim b As String Dim j As Integer b = str1 For j = 0 To nplanets b = b + Str(j) + " " + Str(xp(j)) + " " Next j Debug.Print(b) End Sub Private Sub InitializeForm() Me.startAsyncButton = New System.Windows.Forms.Button Me.cancelAsyncButton = New System.Windows.Forms.Button Me.endAsyncButton = New System.Windows.Forms.Button Me.MonitorButton = New System.Windows.Forms.Button Me.StateL = New System.Windows.Forms.Label Me.StateTpp1 = New System.Windows.Forms.TextBox Me.StateTpp2 = New System.Windows.Forms.TextBox Me.StateTpp3 = New System.Windows.Forms.TextBox Me.StateTpp4 = New System.Windows.Forms.TextBox Me.StateTpp5 = New System.Windows.Forms.TextBox Me.ProcL = New System.Windows.Forms.Label Me.ProcTpp1 = New System.Windows.Forms.TextBox Me.ProcTpp2 = New System.Windows.Forms.TextBox Me.ProcTpp3 = New System.Windows.Forms.TextBox Me.ProcTpp4 = New System.Windows.Forms.TextBox Me.ProcTpp5 = New System.Windows.Forms.TextBox Me.Label2 = New System.Windows.Forms.Label Me.ResultLabelpp1 = New System.Windows.Forms.Label Me.ResultLabelpp2 = New System.Windows.Forms.Label Me.ResultLabelpp3 = New System.Windows.Forms.Label Me.ResultLabelpp4 = New System.Windows.Forms.Label Me.ResultLabelpp5 = New System.Windows.Forms.Label Me.nProcL = New System.Windows.Forms.Label Me.nProcT = New System.Windows.Forms.TextBox Me.tdeltaL = New System.Windows.Forms.Label Me.tdeltaT = New System.Windows.Forms.TextBox Me.seccntL = New System.Windows.Forms.Label Me.seccntT = New System.Windows.Forms.TextBox Me.nplL = New System.Windows.Forms.Label Me.nplT = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.Label3(2) = New System.Windows.Forms.Label Me.Label4 = New System.Windows.Forms.Label Me.Label5 = New System.Windows.Forms.Label Me.Label6 = New System.Windows.Forms.Label Me.pl1T = New System.Windows.Forms.TextBox Me.pl2T = New System.Windows.Forms.TextBox Me.pl3T = New System.Windows.Forms.TextBox Me.pl4T = New System.Windows.Forms.TextBox Me.x1T = New System.Windows.Forms.TextBox Me.x2T = New System.Windows.Forms.TextBox Me.x3T = New System.Windows.Forms.TextBox Me.x4T = New System.Windows.Forms.TextBox Me.y1T = New System.Windows.Forms.TextBox Me.y2T = New System.Windows.Forms.TextBox Me.y3T = New System.Windows.Forms.TextBox Me.y4T = New System.Windows.Forms.TextBox Me.r1T = New System.Windows.Forms.TextBox Me.r2T = New System.Windows.Forms.TextBox Me.r3T = New System.Windows.Forms.TextBox Me.r4T = New System.Windows.Forms.TextBox Me.rev1T = New System.Windows.Forms.TextBox Me.rev2T = New System.Windows.Forms.TextBox Me.rev3T = New System.Windows.Forms.TextBox Me.rev4T = New System.Windows.Forms.TextBox Me.backgroundWorkerpp1 = New System.ComponentModel.BackgroundWorker Me.backgroundWorkerpp2 = New System.ComponentModel.BackgroundWorker Me.backgroundWorkerpp3 = New System.ComponentModel.BackgroundWorker Me.backgroundWorkerpp4 = New System.ComponentModel.BackgroundWorker Me.backgroundWorkerpp5 = New System.ComponentModel.BackgroundWorker Me.SuspendLayout() ' 'Row 1 ' hh = 12 : dhh = 34 Me.StateL.BorderStyle = System.Windows.Forms.BorderStyle.None Me.StateL.Location = New System.Drawing.Point(3, hh) Me.StateL.Name = "StateL" Me.StateL.Size = New System.Drawing.Size(32, 13) Me.StateL.TabIndex = 4 Me.StateL.Text = "State" Me.StateL.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = 60 : ddd = 70 Me.StateTpp1.Location = New System.Drawing.Point(dd, hh) Me.StateTpp1.Name = "StateTpp1" Me.StateTpp1.Size = New System.Drawing.Size(64, 20) Me.StateTpp1.TabIndex = 5 Me.StateTpp1.Text = "" dd = dd + ddd Me.StateTpp2.Location = New System.Drawing.Point(dd, hh) Me.StateTpp2.Name = "StateTpp2" Me.StateTpp2.Size = New System.Drawing.Size(64, 20) Me.StateTpp2.TabIndex = 6 Me.StateTpp2.Text = "" dd = dd + ddd Me.StateTpp3.Location = New System.Drawing.Point(dd, hh) Me.StateTpp3.Name = "StateTpp3" Me.StateTpp3.Size = New System.Drawing.Size(64, 20) Me.StateTpp3.TabIndex = 7 Me.StateTpp3.Text = "" dd = dd + ddd Me.StateTpp4.Location = New System.Drawing.Point(dd, hh) Me.StateTpp4.Name = "StateTpp4" Me.StateTpp4.Size = New System.Drawing.Size(64, 20) Me.StateTpp4.TabIndex = 8 Me.StateTpp4.Text = "" dd = dd + ddd Me.StateTpp5.Location = New System.Drawing.Point(dd, hh) Me.StateTpp5.Name = "StateTpp5" Me.StateTpp5.Size = New System.Drawing.Size(64, 20) Me.StateTpp5.TabIndex = 9 Me.StateTpp5.Text = "" ' 'Row 2 ' hh = hh + dhh Me.ProcL.BorderStyle = System.Windows.Forms.BorderStyle.None Me.ProcL.Location = New System.Drawing.Point(3, hh) Me.ProcL.Name = "ProcL" Me.ProcL.Size = New System.Drawing.Size(39, 13) Me.ProcL.TabIndex = 10 Me.ProcL.Text = "Proc #" Me.ProcL.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = 60 Me.ProcTpp1.Location = New System.Drawing.Point(dd, hh) Me.ProcTpp1.Name = "ProcTpp1" Me.ProcTpp1.Size = New System.Drawing.Size(64, 20) Me.ProcTpp1.TabIndex = 11 Me.ProcTpp1.Text = "" dd = dd + ddd Me.ProcTpp2.Location = New System.Drawing.Point(dd, hh) Me.ProcTpp2.Name = "ProcTpp2" Me.ProcTpp2.Size = New System.Drawing.Size(64, 20) Me.ProcTpp2.TabIndex = 12 Me.ProcTpp2.Text = "" dd = dd + ddd Me.ProcTpp3.Location = New System.Drawing.Point(dd, hh) Me.ProcTpp3.Name = "ProcTpp3" Me.ProcTpp3.Size = New System.Drawing.Size(64, 20) Me.ProcTpp3.TabIndex = 13 Me.ProcTpp3.Text = "" dd = dd + ddd Me.ProcTpp4.Location = New System.Drawing.Point(dd, hh) Me.ProcTpp4.Name = "ProcTpp4" Me.ProcTpp4.Size = New System.Drawing.Size(64, 20) Me.ProcTpp4.TabIndex = 14 Me.ProcTpp4.Text = "" dd = dd + ddd Me.ProcTpp5.Location = New System.Drawing.Point(dd, hh) Me.ProcTpp5.Name = "ProcTpp5" Me.ProcTpp5.Size = New System.Drawing.Size(64, 20) Me.ProcTpp5.TabIndex = 15 Me.ProcTpp5.Text = "" ' 'Row 3 ' hh = hh + dhh Me.Label2.BorderStyle = System.Windows.Forms.BorderStyle.None Me.Label2.Location = New System.Drawing.Point(3, hh) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(67, 13) Me.Label2.TabIndex = 16 Me.Label2.Text = "Performance" Me.Label2.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = 85 Me.ResultLabelpp1.BorderStyle = System.Windows.Forms.BorderStyle.None Me.ResultLabelpp1.Location = New System.Drawing.Point(dd, hh) Me.ResultLabelpp1.Name = "ResultLabelpp1" Me.ResultLabelpp1.Size = New System.Drawing.Size(70, 13) Me.ResultLabelpp1.TabIndex = 3 Me.ResultLabelpp1.Text = "pp1" Me.ResultLabelpp1.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.ResultLabelpp2.BorderStyle = System.Windows.Forms.BorderStyle.None Me.ResultLabelpp2.Location = New System.Drawing.Point(dd, hh) Me.ResultLabelpp2.Name = "ResultLabelpp2" Me.ResultLabelpp2.Size = New System.Drawing.Size(60, 13) Me.ResultLabelpp2.TabIndex = 3 Me.ResultLabelpp2.Text = "pp2" Me.ResultLabelpp2.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.ResultLabelpp3.BorderStyle = System.Windows.Forms.BorderStyle.None Me.ResultLabelpp3.Location = New System.Drawing.Point(dd, hh) Me.ResultLabelpp3.Name = "ResultLabelpp3" Me.ResultLabelpp3.Size = New System.Drawing.Size(70, 13) Me.ResultLabelpp3.TabIndex = 3 Me.ResultLabelpp3.Text = "pp3" Me.ResultLabelpp3.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.ResultLabelpp4.BorderStyle = System.Windows.Forms.BorderStyle.None Me.ResultLabelpp4.Location = New System.Drawing.Point(dd, hh) Me.ResultLabelpp4.Name = "ResultLabelpp4" Me.ResultLabelpp4.Size = New System.Drawing.Size(60, 13) Me.ResultLabelpp4.TabIndex = 3 Me.ResultLabelpp4.Text = "pp4" Me.ResultLabelpp4.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.ResultLabelpp5.BorderStyle = System.Windows.Forms.BorderStyle.None Me.ResultLabelpp5.Location = New System.Drawing.Point(dd, hh) Me.ResultLabelpp5.Name = "ResultLabelpp5" Me.ResultLabelpp5.Size = New System.Drawing.Size(70, 13) Me.ResultLabelpp5.TabIndex = 3 Me.ResultLabelpp5.Text = "pp5" Me.ResultLabelpp5.TextAlign = System.Drawing.ContentAlignment.TopLeft ' 'Row 4 ' dd = 80 : ddd = 95 hh = hh + dhh Me.nProcL.BorderStyle = System.Windows.Forms.BorderStyle.None Me.nProcL.Location = New System.Drawing.Point(dd - 60, hh) Me.nProcL.Name = "nProcL" Me.nProcL.Size = New System.Drawing.Size(55, 13) Me.nProcL.TabIndex = 3 Me.nProcL.Text = "# Proc" Me.nProcL.TextAlign = System.Drawing.ContentAlignment.TopRight Me.nProcT.Location = New System.Drawing.Point(dd, hh) Me.nProcT.Name = "nProcT" Me.nProcT.Size = New System.Drawing.Size(40, 20) Me.nProcT.TabIndex = 3 Me.nProcT.Text = "0" Me.nProcT.TextAlign = System.Drawing.ContentAlignment.TopLeft ' = right dd = dd + ddd Me.tdeltaL.BorderStyle = System.Windows.Forms.BorderStyle.None Me.tdeltaL.Location = New System.Drawing.Point(dd - 60, hh) Me.tdeltaL.Name = "tdeltaL" Me.tdeltaL.Size = New System.Drawing.Size(55, 13) Me.tdeltaL.TabIndex = 3 Me.tdeltaL.Text = "delta t" Me.tdeltaL.TextAlign = System.Drawing.ContentAlignment.TopRight Me.tdeltaT.Location = New System.Drawing.Point(dd, hh) Me.tdeltaT.Name = "tdeltaT" Me.tdeltaT.Size = New System.Drawing.Size(40, 20) Me.tdeltaT.TabIndex = 3 Me.tdeltaT.Text = "0.02" Me.tdeltaT.TextAlign = System.Drawing.ContentAlignment.TopLeft ' = right dd = dd + ddd Me.seccntL.BorderStyle = System.Windows.Forms.BorderStyle.None Me.seccntL.Location = New System.Drawing.Point(dd - 60, hh) Me.seccntL.Name = "seccntL" Me.seccntL.Size = New System.Drawing.Size(55, 13) Me.seccntL.TabIndex = 3 Me.seccntL.Text = "sec" Me.seccntL.TextAlign = System.Drawing.ContentAlignment.TopRight Me.seccntT.Location = New System.Drawing.Point(dd, hh) Me.seccntT.Name = "seccntT" Me.seccntT.Size = New System.Drawing.Size(40, 20) Me.seccntT.TabIndex = 3 Me.seccntT.Text = "1" 'Me.seccntT.TextAlign = System.Drawing.ContentAlignment.TopRight Me.seccntT.TextAlign = System.Drawing.ContentAlignment.TopLeft ' = right dd = dd + ddd Me.nplL.BorderStyle = System.Windows.Forms.BorderStyle.None Me.nplL.Location = New System.Drawing.Point(dd - 60, hh) Me.nplL.Name = "nplL" Me.nplL.Size = New System.Drawing.Size(55, 13) Me.nplL.TabIndex = 3 Me.nplL.Text = "# planets" Me.nplL.TextAlign = System.Drawing.ContentAlignment.TopRight Me.nplT.Location = New System.Drawing.Point(dd, hh) Me.nplT.Name = "nplT" Me.nplT.Size = New System.Drawing.Size(40, 20) Me.nplT.TabIndex = 3 Me.nplT.Text = "10" Me.nplT.TextAlign = System.Drawing.ContentAlignment.TopLeft 'Right ' ' row 5 startAsyncButton cancelAsyncButton endAsyncButton MonitorButton ' dd = 60 hh = hh + dhh Me.startAsyncButton.Location = New System.Drawing.Point(dd, hh) Me.startAsyncButton.Name = "startAsyncButton" Me.startAsyncButton.Size = New System.Drawing.Size(63, 25) Me.startAsyncButton.TabIndex = 0 Me.startAsyncButton.Text = "Start" dd = dd + ddd Me.cancelAsyncButton.Enabled = True Me.cancelAsyncButton.Location = New System.Drawing.Point(dd, hh) Me.cancelAsyncButton.Name = "cancelAsyncButton" Me.cancelAsyncButton.Size = New System.Drawing.Size(63, 25) Me.cancelAsyncButton.TabIndex = 1 Me.cancelAsyncButton.Text = "Cancel" dd = dd + ddd Me.endAsyncButton.Location = New System.Drawing.Point(dd, hh) Me.endAsyncButton.Name = "EndAsyncButton" Me.endAsyncButton.Size = New System.Drawing.Size(63, 25) Me.endAsyncButton.TabIndex = 2 Me.endAsyncButton.Text = "End" dd = dd + ddd Me.MonitorButton.Location = New System.Drawing.Point(dd, hh) Me.MonitorButton.Name = "MonitorButton" Me.MonitorButton.Size = New System.Drawing.Size(63, 25) Me.MonitorButton.TabIndex = 3 Me.MonitorButton.Text = "Monitor" ' 'Row 6 Planet x y r rev ' dd = 80 hh = hh + dhh Me.Label1.BorderStyle = System.Windows.Forms.BorderStyle.None Me.Label1.Location = New System.Drawing.Point(6, hh) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(40, 13) Me.Label1.TabIndex = 3 Me.Label1.Text = "Planet" Me.Label1.TextAlign = System.Drawing.ContentAlignment.TopLeft Me.Label3(2).BorderStyle = System.Windows.Forms.BorderStyle.None Me.Label3(2).Location = New System.Drawing.Point(dd, hh) Me.Label3(2).Name = "Label3(2)" Me.Label3(2).Size = New System.Drawing.Size(12, 13) Me.Label3(2).TabIndex = 3 Me.Label3(2).Text = "x" Me.Label3(2).TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.Label4.BorderStyle = System.Windows.Forms.BorderStyle.None Me.Label4.Location = New System.Drawing.Point(dd, hh) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(15, 13) Me.Label4.TabIndex = 3 Me.Label4.Text = "y" Me.Label4.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.Label5.BorderStyle = System.Windows.Forms.BorderStyle.None Me.Label5.Location = New System.Drawing.Point(dd, hh) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(12, 13) Me.Label5.TabIndex = 3 Me.Label5.Text = "r" Me.Label5.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.Label6.BorderStyle = System.Windows.Forms.BorderStyle.None Me.Label6.Location = New System.Drawing.Point(dd, hh) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(22, 13) Me.Label6.TabIndex = 3 Me.Label6.Text = "rev" Me.Label6.TextAlign = System.Drawing.ContentAlignment.TopLeft ' 'Row 7 Planet 1 ' dhh = 25 hh = hh + dhh 'hh=200 Me.pl1T.Location = New System.Drawing.Point(13, hh) Me.pl1T.Name = "pl1T" Me.pl1T.Size = New System.Drawing.Size(21, 20) Me.pl1T.TabIndex = 3 Me.pl1T.Text = "1" Me.pl1T.TextAlign = System.Drawing.ContentAlignment.TopLeft ' right ! dd = 60 Me.x1T.Location = New System.Drawing.Point(dd, hh) Me.x1T.Name = "x1T" Me.x1T.Size = New System.Drawing.Size(61, 20) Me.x1T.TabIndex = 3 Me.x1T.Text = "0" Me.x1T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.y1T.Location = New System.Drawing.Point(dd, hh) Me.y1T.Name = "y1T" Me.y1T.Size = New System.Drawing.Size(61, 20) Me.y1T.TabIndex = 3 Me.y1T.Text = "0" Me.y1T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.r1T.Location = New System.Drawing.Point(dd, hh) Me.r1T.Name = "r1T" Me.r1T.Size = New System.Drawing.Size(61, 20) Me.r1T.TabIndex = 3 Me.r1T.Text = "0" dd = dd + ddd Me.rev1T.Location = New System.Drawing.Point(dd, hh) Me.rev1T.Name = "rev1T" Me.rev1T.Size = New System.Drawing.Size(61, 20) Me.rev1T.TabIndex = 3 Me.rev1T.Text = "0" Me.rev1T.TextAlign = System.Drawing.ContentAlignment.TopLeft ' right ! ' 'Row 8 Planet 2 ' hh = hh + dhh Me.pl2T.Location = New System.Drawing.Point(13, hh) Me.pl2T.Name = "pl2T" Me.pl2T.Size = New System.Drawing.Size(21, 20) Me.pl2T.TabIndex = 3 Me.pl2T.Text = "2" Me.pl2T.TextAlign = System.Drawing.ContentAlignment.TopLeft ' right ! dd = 60 Me.x2T.Location = New System.Drawing.Point(dd, hh) Me.x2T.Name = "x2T" Me.x2T.Size = New System.Drawing.Size(61, 20) Me.x2T.TabIndex = 3 Me.x2T.Text = "0" Me.x2T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.y2T.Location = New System.Drawing.Point(dd, hh) Me.y2T.Name = "y2T" Me.y2T.Size = New System.Drawing.Size(61, 20) Me.y2T.TabIndex = 3 Me.y2T.Text = "0" Me.y2T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.r2T.Location = New System.Drawing.Point(dd, hh) Me.r2T.Name = "r2T" Me.r2T.Size = New System.Drawing.Size(61, 20) Me.r2T.TabIndex = 3 Me.r2T.Text = "0" dd = dd + ddd Me.rev2T.Location = New System.Drawing.Point(dd, hh) Me.rev2T.Name = "rev2T" Me.rev2T.Size = New System.Drawing.Size(61, 20) Me.rev2T.TabIndex = 3 Me.rev2T.Text = "0" Me.rev2T.TextAlign = System.Drawing.ContentAlignment.TopLeft ' right ! ' 'Row 9 Planet 3 ' hh = hh + dhh Me.pl3T.Location = New System.Drawing.Point(13, hh) Me.pl3T.Name = "pl3T" Me.pl3T.Size = New System.Drawing.Size(21, 20) Me.pl3T.TabIndex = 3 Me.pl3T.Text = "3" Me.pl3T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = 60 Me.x3T.Location = New System.Drawing.Point(dd, hh) Me.x3T.Name = "x3T" Me.x3T.Size = New System.Drawing.Size(61, 20) Me.x3T.TabIndex = 3 Me.x3T.Text = "0" Me.x3T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.y3T.Location = New System.Drawing.Point(dd, hh) Me.y3T.Name = "y3T" Me.y3T.Size = New System.Drawing.Size(61, 20) Me.y3T.TabIndex = 3 Me.y3T.Text = "0" Me.y3T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.r3T.Location = New System.Drawing.Point(dd, hh) Me.r3T.Name = "r3T" Me.r3T.Size = New System.Drawing.Size(61, 20) Me.r3T.TabIndex = 3 Me.r3T.Text = "0" dd = dd + ddd Me.rev3T.Location = New System.Drawing.Point(dd, hh) Me.rev3T.Name = "rev3T" Me.rev3T.Size = New System.Drawing.Size(61, 20) Me.rev3T.TabIndex = 3 Me.rev3T.Text = "0" Me.rev3T.TextAlign = System.Drawing.ContentAlignment.TopLeft ' right ! ' 'Row 10 Planet 4 ' hh = hh + dhh Me.pl4T.Location = New System.Drawing.Point(13, hh) Me.pl4T.Name = "pl4T" Me.pl4T.Size = New System.Drawing.Size(21, 20) Me.pl4T.TabIndex = 3 Me.pl4T.Text = "4" Me.pl4T.TextAlign = System.Drawing.ContentAlignment.TopLeft ' right ! dd = 60 Me.x4T.Location = New System.Drawing.Point(dd, hh) Me.x4T.Name = "x4T" Me.x4T.Size = New System.Drawing.Size(61, 20) Me.x4T.TabIndex = 3 Me.x4T.Text = "0" Me.x4T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.y4T.Location = New System.Drawing.Point(dd, hh) Me.y4T.Name = "y4T" Me.y4T.Size = New System.Drawing.Size(61, 20) Me.y4T.TabIndex = 3 Me.y4T.Text = "0" Me.y4T.TextAlign = System.Drawing.ContentAlignment.TopLeft dd = dd + ddd Me.r4T.Location = New System.Drawing.Point(dd, hh) Me.r4T.Name = "r4T" Me.r4T.Size = New System.Drawing.Size(61, 20) Me.r4T.TabIndex = 3 Me.r4T.Text = "0" dd = dd + ddd Me.rev4T.Location = New System.Drawing.Point(dd, hh) Me.rev4T.Name = "rev4T" Me.rev4T.Size = New System.Drawing.Size(61, 20) Me.rev4T.TabIndex = 3 Me.rev4T.Text = "0" Me.rev4T.TextAlign = System.Drawing.ContentAlignment.TopLeft ' right ! ' 'backgroundWorkerpp1 ' Me.backgroundWorkerpp1.WorkerReportsProgress = True Me.backgroundWorkerpp1.WorkerSupportsCancellation = True Me.backgroundWorkerpp2.WorkerReportsProgress = True Me.backgroundWorkerpp2.WorkerSupportsCancellation = True Me.backgroundWorkerpp3.WorkerReportsProgress = True Me.backgroundWorkerpp3.WorkerSupportsCancellation = True Me.backgroundWorkerpp4.WorkerReportsProgress = True Me.backgroundWorkerpp4.WorkerSupportsCancellation = True Me.backgroundWorkerpp5.WorkerReportsProgress = True Me.backgroundWorkerpp5.WorkerSupportsCancellation = True ' 'PlanetForm ' Me.ClientSize = New System.Drawing.Size(dd + ddd - 25, hh + dhh + 10) Me.Controls.Add(Me.cancelAsyncButton) Me.Controls.Add(Me.startAsyncButton) Me.Controls.Add(Me.endAsyncButton) Me.Controls.Add(Me.MonitorButton) Me.Controls.Add(Me.StateL) Me.Controls.Add(Me.StateTpp1) Me.Controls.Add(Me.StateTpp2) Me.Controls.Add(Me.StateTpp3) Me.Controls.Add(Me.StateTpp4) Me.Controls.Add(Me.StateTpp5) Me.Controls.Add(Me.ProcL) Me.Controls.Add(Me.ProcTpp1) Me.Controls.Add(Me.ProcTpp2) Me.Controls.Add(Me.ProcTpp3) Me.Controls.Add(Me.ProcTpp4) Me.Controls.Add(Me.ProcTpp5) Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.ResultLabelpp1) Me.Controls.Add(Me.ResultLabelpp2) Me.Controls.Add(Me.ResultLabelpp3) Me.Controls.Add(Me.ResultLabelpp4) Me.Controls.Add(Me.ResultLabelpp5) Me.Controls.Add(Me.nProcL) Me.Controls.Add(Me.nProcT) Me.Controls.Add(Me.tdeltaL) Me.Controls.Add(Me.tdeltaT) Me.Controls.Add(Me.seccntL) Me.Controls.Add(Me.seccntT) Me.Controls.Add(Me.nplL) Me.Controls.Add(Me.nplT) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.Label3(2)) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label6) Me.Controls.Add(Me.pl1T) Me.Controls.Add(Me.x1T) Me.Controls.Add(Me.y1T) Me.Controls.Add(Me.r1T) Me.Controls.Add(Me.rev1T) Me.Controls.Add(Me.pl2T) Me.Controls.Add(Me.x2T) Me.Controls.Add(Me.y2T) Me.Controls.Add(Me.r2T) Me.Controls.Add(Me.rev2T) Me.Controls.Add(Me.pl3T) Me.Controls.Add(Me.x3T) Me.Controls.Add(Me.y3T) Me.Controls.Add(Me.r3T) Me.Controls.Add(Me.rev3T) Me.Controls.Add(Me.pl4T) Me.Controls.Add(Me.x4T) Me.Controls.Add(Me.y4T) Me.Controls.Add(Me.r4T) Me.Controls.Add(Me.rev4T) Me.Name = "PlanetForm" Me.Text = "Planet1 Simulation" Me.ResumeLayout(False) End Sub 'InitializeComponent_ Shared Sub Main() Application.Run(New Planet1Form) End Sub 'Main End Class 'PlanetForm