What you need to answer the question is in comments in the code:
using System;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
player1.Start();
t.Start();
while (t.IsAlive); //A intenção seria depois que o Thread t acabar se a Thread player1
//ainda estiver ativa o jogador perde a rodada.
//gostaria também de que se a Thread player1 já acabou
//a Thread t pode se encerrar.
if (player1.IsAlive) player1.Abort(); Console.Write("\nSeu Tempo Acabou");
}
static void player()
{
Console.Write("Player1 Escreva Algo (Nao Deixe Passar 10 Segundos): ");
str += Console.ReadLine() + " ";
Console.Write(" {0}", str);
}
static void tempo()
{
System.Threading.Thread.Sleep(10000); //10 sec = 10.000 milisec
}
static String str = "";
static System.Threading.Thread player1 = new System.Threading.Thread(player);
static System.Threading.Thread t = new System.Threading.Thread(tempo);
}
Ex: In chess games you have a time available to move your piece, if you do not move within eg 30 seconds you lose your move and it is the turn of the next player (Ai would show the message), now if you move your piece ahead of time, you just pass the turn to another player without losing anything. The idea is +/- this.