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点,这远非理想.其次,它实际上并不起作用.添加的积分和分数都没有更新.我怎样才能解决这个问题?
你还没有真正开始你的线程,所以什么都不会发生:
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)