0

これまでの私のコードを紹介することから始めましょう。

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);
     }
  }
}

したがって、このコードをコンパイルしようとすると、preanswerと「prompt」メソッドでの回答に対してCS0103エラーが発生します。

これは3つの質問につながります:

  • 事前回答と回答を「プロンプト」方式で利用できるようにするには、正確に何をする必要がありますか?

  • スコア変数に1を正しく追加しましたか?

  • 実行中のスレッドを終了するにはどうすればよいですか?(この場合、「質問」スレッドは、回答を入力するまで終了しません。)

何を変更するか教えてください。数週間前に始めたばかりなので、コーディングの単語や用語はわかりません。できるだけ明確にするようにしてください。

4

2 に答える 2

0

スレッドを待機するには、Join()を使用します...これにより、関数が呼び出されたスレッドに、スレッドが再び結合するまで待機するように指示されます。

ask.Join(int);
于 2011-01-19T21:38:44.910 に答える
0
      static string preanswer;
      static decimal answer = 0;

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

于 2011-01-19T21:33:00.113 に答える