如果我有这样的方法
private void LoadModel(List<object> filenames)
{
}
并希望在线程中运行此方法我做这个
loadingThread = new ParameterizedThreadStart(LoadModel)
但是给我错误
如何解决这个问题?
No overload for 'LoadModel' matches delegate 'System.Threading.ParameterizedThreadStart'
答案 0 :(得分:5)
此委托定义为
public delegate void ParameterizedThreadStart(object obj)
您必须更改方法声明以匹配它:
private void LoadModel(object filenames)
并在方法中将filenames
投射到List
。
创建并启动线程使用
Thread loadingThread = new Thread(LoadModel);
loadingThread.Start(filenames);
请考虑使用Tasks或ThreadPool。
,而不是创建自己的主题答案 1 :(得分:1)
解决问题的另一种方法是让你的方法仍然具有你想要的参数类型,就是使用这样的lambda表达式:
Thread thread = new Thread(() => LoadModel(list));
其中list
是您要传递的参数值。