2015-12-17 4 views
0

Хорошо, поэтому для школы нам нужно создать программу для потоковой передачи, которая приостанавливается и возобновляется. Предполагается, что он будет отсчитываться от 0 до 6, а затем возвращается к нулю, а затем снова возвращается обратно.VB.Net Threading suspending and resuming

Однако вместо того, чтобы печатать значения по мере их подсчета, вместо этого оно просто печатает значение 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

Если мой ответ помог, пожалуйста, повысьте его/отметьте как правильно. Также принято распространять вещи, которые помогли, например, комментарий К. Капеллана. – charliefox2

+0

Я проголосовал и отметил ваш ответ как правильный. Тем не менее, мне нужно 15 очков репутации, чтобы они менялись на всеобщее обозрение. Я только недавно начал использовать этот сайт, поэтому, возможно, именно поэтому. Кроме того, я не вижу возможности для Up-vote commments –

 Смежные вопросы

  • Нет связанных вопросов^_^