【发布时间】:2016-08-20 15:50:13
【问题描述】:
我尝试编写自己的控制台蛇游戏,问题是这个.. 我的整个游戏都在主线程中,然后我创建了 addVlakno (新线程)来计算秒数,因此它可以每秒从 Main 中创建的 hra 实例调用一个方法,因此它将清除控制台并执行一些要移动的方法.
class Program
{
static void Main(string[] args)
{
Hra hra = new Hra();
Thread addVlakno = new Thread(Run);
addVlakno.Start();
...
}
public static void Run()
{
Thread.Sleep(1000);
hra.method(); // The problem is here*
}
}
*我知道我必须在这里有一个现有的 Hra 实例,但我需要使用在 Main 中创建的实例,这可能吗?通过一些代表,或一些指针或其他方式?因为创建的 hra 具有游戏的所有值,所以我需要使用它们。
我尝试将Hra hra = new Hra(); 放在 Main 之前,但在这种情况下,我什至无法在 main 中使用它。
【问题讨论】:
-
"但在这种情况下,我什至无法使用它。"更具体一点 - 到底发生了什么(以及代码看起来如何)?
-
static Hra hra = new Hra();在Main之前怎么样? -
您不能在
Run()中使用hra,因为现在hra是Main中的局部变量。如果你想在Run()中访问它,你应该在Program类中将hra声明为static变量(static Hra hra;在Main方法之外)。根据您要执行的操作,这不一定是一个好习惯,但它会适用于该测试/练习计划。
标签: c# multithreading static non-static