我有一个用户控件与树上。它使用多线程向其添加节点。我有一个函数称为展开,我需要执行过滤完成后,因为我是一个多线程的新手我不知道如何做到这一点。这里是我的代码:等待的线程问题
class MyClass : UserControl
{
private Thread nThread;
private bool searchLoadCompleted = false;
private void Filter()
{
ClearTree();
this.nThread = new Thread(new ParameterizedThreadStart(AddFilteredResultsToTree));
this.nThread.IsBackground = true;
this.nThread.Start(someParameter);
}
private void AddFilteredResultsToTree(int someParameter)
{
myTree.Invoke(new MethodInvoker(()=> this.searchLoadCompleted = false));
myTree.Invoke(new MethodInvoker(()=> AppendNode(......)));
myTree.Invoke(new MethodInvoker(()=> this.searchLoadCompleted = true));
}
private void Expand()
{
}
}
我尝试添加nThread.Join()
到Expand()
但它得到无限期地卡住。我该怎么办?
为什么不把Expand()代码放到AddFilteredResultsToTree()中? – 2009-11-18 14:12:08