制作一个新的选择性线程

时间:2011-04-05 08:04:15

标签: c# multithreading animation parameters

我想在不同的线程中运行我的函数,但问题是该函数需要一个参数。

如果我尝试使用不需要参数的函数(CPUPlay()),那就ok:

private void OpenNewThread(bool open)
    {
        Thread thread = new Thread(new ThreadStart(CPUPlay));
    }

但是如果我尝试使用需要参数的函数,它就不起作用了:

private void OpenNewThread(bool open)
{
    Thread thread = new Thread(new ParameterizedThreadStart(CloseOpenAnimation));
    thread.Start(open);
}

那么如何在不同的线程中运行带参数的函数呢?

3 个答案:

答案 0 :(得分:2)

您的功能是否符合此签名?

public void CloseOpenAnimation(object argument)

答案 1 :(得分:1)

作弊并使用代表

private void OpenNewThread(bool open)
{
    Thread thread = new Thread(new ThreadStart(
        () => CloseOpenAnimation(open)));
    thread.Start();
}

答案 2 :(得分:0)

尝试使用BackgroundWorker对象。您可以使用对象参数Argument。

BackgroundWorker bg = new BackgroundWorker();
bg.DoWork+=new DoWorkEventHandler(bg_DoWork);
bg.RunWorkerAsync(5);

static void  bg_DoWork(object sender, DoWorkEventArgs e)
{
            int j = (int)e.Argument;
}

其中e.Argument是object类型。