没有超负荷的''匹配委托' System.Threading.ParameterizedThreadStart'

时间:2015-10-14 22:54:20

标签: c# multithreading

如果我有这样的方法

  private void LoadModel(List<object> filenames)
{
}

并希望在线程中运行此方法我做这个

loadingThread = new ParameterizedThreadStart(LoadModel)

但是给我错误

如何解决这个问题?

No overload for 'LoadModel' matches delegate 'System.Threading.ParameterizedThreadStart'    

2 个答案:

答案 0 :(得分:5)

此委托定义为

public delegate void ParameterizedThreadStart(object obj)

您必须更改方法声明以匹配它:

private void LoadModel(object filenames)

并在方法中将filenames投射到List

创建并启动线程使用

Thread loadingThread = new Thread(LoadModel);
loadingThread.Start(filenames);

请考虑使用TasksThreadPool

,而不是创建自己的主题

答案 1 :(得分:1)

解决问题的另一种方法是让你的方法仍然具有你想要的参数类型,就是使用这样的lambda表达式:

Thread thread = new Thread(() => LoadModel(list));

其中list是您要传递的参数值。