我需要帮助:我有一个带有关联线程的嵌套对象:
public class XNodeViewModel
{
private int id;
private Thread workerThread;
private bool _alivingThread;
readonly ObservableCollection<XNodeViewModel> _children;
private XNodeViewModel(...)
{
...
if (...)
{
workerThread = new Thread(DoWork) { IsBackground = true };
workerThread.Start();
}
}
public ObservableCollection<XNodeViewModel> Children
{
get { return _children; }
}
public int Level
{
get { return _xnode.Level; }
}
public Thread WorkerThread
{
get { return this.workerThread; }
}
}
在后面的 wpf 代码中,我引用了这个 ViewModel 并且我想要关联所有线程对象。我正在学习 Linq,我知道有 Function SelectMany 来展平嵌套对象:使用一个按钮,我想用这个函数停止所有线程:
public void StopAllThread()
{
//_firstGeneration is my root object
var threads = _firstGeneration.SelectMany(x => x.WorkerThread).ToList();
foreach( thread in threads){
workerThread.Abort();
}
}
但是编译器告诉我:
错误 1 无法从用法中推断方法“System.Linq.Enumerable.SelectMany(System.Collections.Generic.IEnumerable, System.Func>)”的类型参数。尝试明确指定类型参数。
只有当我请求类型“线程”时。(如果我请求另一种类型的对象是可以的)我在哪里做错了?