我想在不同的线程中运行我的函数,但问题是该函数需要一个参数。
如果我尝试使用不需要参数的函数(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);
}
那么如何在不同的线程中运行带参数的函数呢?
答案 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类型。