1

我需要知道如何通过我的线程发送数据,我有这个代码。

            new Thread(BattleArena.ArenaGame(12)).Start();

在 BattleArena 课上我有

public static void ArenaGame(int test)
    {
        while (true)
        {

            Console.WriteLine(test);

            Thread.Sleep(400);
        }
    }

但这不是一个有效的方法......

4

3 回答 3

3

您需要使用参数化线程。喜欢

 ThreadStart start = () => {     BattleArena.ArenaGame(12);  };

 Thread t = new Thread(start);
 t.Start();

或者

 Thread newThread = new Thread(BattleArena.ArenaGame);
 newThread.Start(12);

然后更改此方法,因为它仅将对象作为参数,因为 ThreadStart 不是通用委托

public static void ArenaGame(object value)
{
    int test = (int)value;
    while (true)
    {

        Console.WriteLine(test);

        Thread.Sleep(400);
    }
}
于 2013-07-25T15:10:38.603 回答
3

现在,您正在“发送”方法调用的结果。(甚至无法编译)。你想发送/执行一个功能:

new Thread(() => BattleArena.ArenaGame(12)).Start();

不要使用参数化线程,由于 lambdas,它们已经过时了。

澄清一下:线程不是发送数据的方式。它是一种执行功能的方法。该函数必须包含数据。

于 2013-07-25T15:14:28.263 回答
1

你应该使用参数化的 ThreadStart

于 2013-07-25T15:22:56.903 回答