2015-12-17 236 views
0

好的,所以對於學校我們需要製作一個線程程序來暫停和恢復。它應該計數從0到6,然後回到零,然後再次備份。VB.Net線程暫停和恢復

但是,不是在計數時打印值,而是僅打印一次的值1。代碼如下:

Module Module1 
Public A As System.Threading.Thread = New Threading.Thread(AddressOf MethodA) 
Public B As System.Threading.Thread = New Threading.Thread(AddressOf MethodB) 


Sub MethodA() 
    Dim C As Integer 
    C = 0 
    C = C + 1 
    If C = 6 Then 
     B.Start() 
     If A.ThreadState = Threading.ThreadState.Running Then 
      A.Suspend() 
     End If 
    End If 
    Console.Write(C) 
End Sub 

Sub MethodB() 
    Dim C As Integer 
    C = 6 
    C = 6 - 1 
    For C > 0 
     Console.Write(C) 
    Next 

    If A.ThreadState = Threading.ThreadState.Suspended Then 
     A.Resume() 
    End If 
End Sub 

Sub Main() 
    A.Start() 
    Console.ReadLine() 
End Sub 

End Module 
+0

你是什麼意思「它不會運行」?你有錯誤嗎?如果是這樣,什麼錯誤,並在哪裏? – charliefox2

+1

對於初學者來說,MethodA中沒有循環......並且在MethodB中,我假設應該是對於C = 6到0步-1,而不是對於C> 0. – Capellan

+1

謝謝你回答我!對不起,我不太清楚。通過它不會運行我的意思是我無法得到它的工作。沒有錯誤,就像@ charliefox2所說的輸出1.我明白我現在做錯了什麼。謝謝:) –

回答

1

看你的代碼,我猜發生了什麼事是你的控制檯僅輸出1,然後等待用戶退出。看到我的評論如下。

Sub MethodA() 
    Dim C As Integer 
    C = 0 
    C = C + 1 'set C equal to 0 + 1 
    If C = 6 Then 'C equals 1, not 6 
     B.Start() 
     If A.ThreadState = Threading.ThreadState.Running Then 
      A.Suspend() 
     End If 
    End If 
    Console.Write(C) 'Write C, which is 1 
End Sub 

此外,你必須:

For C > 0 
    Console.Write(C) 
Next 

但我敢肯定,正確的語法是:

For C = 6 To 0 Step -1 
    Console.Write(C) 
Next 

這應該讓你去一次。

編輯:基本上正是@Capellan在他的評論中所說的。

+0

非常感謝你的回答。是的,你是正確的,它輸出的是1.現在我明白我做錯了什麼。十分感謝你的幫助! :) –

+0

如果我的答案有幫助,請將其加入/標記爲正確。習慣上喜歡的東西,比如@ Capellan的評論。 – charliefox2

+0

我已經投了票,並標明你的答案是正確的。不過,我需要15個聲望點才能在公開展示中改變。我最近纔開始使用這個網站,所以也許這就是爲什麼。此外,我沒有看到投票權 –