Потоки: переменный доступ и прекращение потока - PullRequest
0 голосов
/ 20 января 2011

Позвольте мне сначала показать вам мой код:

using System;
using System.Threading;
class MathQuiz
{
  static void Main() 
  {
   int score = 0;
   string preanswer;
   decimal answer = 0;
   Console.WriteLine("Welcome to Project5, a MathQuiz project.");
   Console.WriteLine("You will be asked 10 questions, and will have 30 seconds to read and answer each one.");
   Console.WriteLine("Press any key to begin.");
   Console.ReadKey(true);
   Console.WriteLine("What is 2 + 2?");
    Thread ask = new Thread (new ThreadStart (MathQuiz.prompt));
    ask.Start();
    Thread.Sleep(3000);
    //This is where I want to end the thread if it isn't already done.
    if (answer == 4)
    {
     score = score+1; //Here's where I don't know if my adding is correct.
    }
    Console.WriteLine("Press any key to move on to the next question!");
    Console.ReadKey(true);
  }

  static void prompt()
  {
   preanswer = (Console.ReadLine());
   if (!decimal.TryParse(preanswer, out answer))
  {
   Console.WriteLine("That wasn't even a number or decimal!");
  }
   else
       {
     answer = decimal.Parse(preanswer);
     }
  }
}

Итак, когда я пытаюсь скомпилировать этот код, я получаю ошибки CS0103 для предварительного ответа и ответа в методе "prompt".*

Это приводит к 3 вопросам:

  • Что именно я должен сделать, чтобы предварительный ответ и ответ были доступны для метода "prompt"?

  • Правильно ли я добавил 1 в переменную счета?

  • Как я могу прекратить поток, если он запущен?(В этом случае поток «спросить» не закончится, пока они не введут ответ.)

Пожалуйста, просто скажите мне, что изменить.Я не знаю кодирования слов и терминологии, потому что я только начал несколько недель назад.Пожалуйста, постарайтесь быть максимально ясным.

Ответы [ 2 ]

0 голосов
/ 20 января 2011

Чтобы дождаться потока, используйте Join () ... Это сообщит потоку, для какой функции вызывается ожидание потока, пока он не присоединится обратно:

ask.Join(int);
0 голосов
/ 20 января 2011
      static string preanswer;
      static decimal answer = 0;

      static void Main() 
      {
       int score = 0;
       //string preanswer;
       //decimal answer = 0;
...

и т. Д.

...