螺纹评分系统

Run*_*ke2 0 c# multithreading windows-phone-7

我开始学习线程并遇到了问题.

我有一个评分系统,旨在为临时的addedPoints变量添加一个点,向玩家展示他们最近获得的积分数.然后在大约1秒后,添加的分数应该添加到球员得分.

我的尝试看起来像这样:

public static void AddPoints(int points)
{
    for (int i = 0; i < points; i++)
    {
        Thread addThread = new Thread(new ThreadStart(ThreadedPoint));
    }
}

private static void ThreadedPoint()
{
    addedPoints += 1;
    Thread.Sleep(1000);
    score += 1;
    addedPoints -= 1;
}
Run Code Online (Sandbox Code Playgroud)

这有两个问题.首先它只允许我为每个线程添加1点,这远非理想.其次,它实际上并不起作用.添加的积分和分数都没有更新.我怎样才能解决这个问题?

Rob*_*obV 8

你还没有真正开始你的线程,所以什么都不会发生:

public static void AddPoints(int points)
{
    for (int i = 0; i < points; i++)
    {
        Thread addThread = new Thread(new ThreadStart(ThreadedPoint));
        addThread.Start();
    }
}
Run Code Online (Sandbox Code Playgroud)

在一次添加多个点而不是一次添加多个点时,您可以使用ParameterizedThreadStart:

public static void AddPoints(int points)
{
   Thread addThread = new Thread(new ParameterizedThreadStart(ThreadedPoint));
   addThread.Start(points); //You may need a cast of points to Object here
}

private static void ThreadedPoint(Object data)
{
    int points = (int)data;
    addedPoints += points;
    Thread.Sleep(1000);
    score += points;
    addedPoints -= points;
}
Run Code Online (Sandbox Code Playgroud)