Thread C#

Sou iniciante, entendo pouco em C# e muito menos Thread. Estou conhecendo agora. Será que é possivel auxiliar a resolver este problema estipulado.

Escreva um programa em que duas threads escrevam números aleatórios em um vetor(escopo global) de inteiros e com tamanho 50. A posição a ser preenchida de forma sequencial. Este valor começa em -1 e cada thread deve incrementá-lo antes de usá-lo. Quando o vetor estiver preenchido a thread original deve ser acordada por meio de uma variável de condição.

É possível sim, basta dizer qual é a dúvida.

[quote=Timilim]Sou iniciante, entendo pouco em C# e muito menos Thread. Estou conhecendo agora. Será que é possivel auxiliar a resolver este problema estipulado.

Escreva um programa em que duas threads escrevam números aleatórios em um vetor(escopo global) de inteiros e com tamanho 50. A posição a ser preenchida de forma sequencial. Este valor começa em -1 e cada thread deve incrementá-lo antes de usá-lo. Quando o vetor estiver preenchido a thread original deve ser acordada por meio de uma variável de condição.
[/quote]

Referente ao exercicio acima.

class impressao
{
private int val;
private static Random rd = new Random();
public void print()
{
Console.WriteLine(Thread.CurrentThread.Name + "posicao ");
//sorteia um valor aleatorio para val
val = rd.Next(200);
//após o soteio eu quero que mostre o seu valor aleatorio
Console.WriteLine(Thread.CurrentThread.Name + " " + val);

    }
}


class Program
{

    static void Main(string[] args)
    {
        int[] vetor;
        vetor = new int[50];

       
    }

No caso nao estou conseguindo a como a comecar incrementar as threads e fazer que os valores começe na posicao -1