2010-04-14 43 views
0

我有树视图,其中我有文件系统的逻辑磁盘。当用户选择一些文件和文件夹并按下按钮程序时,评估所选文件和文件夹的大小。此功能可能需要很长时间。我决定做什么线程将运行此功能。该函数与TreeNode的数组一起工作。但后来我想现在是它扩展了或不是编译器说:“尝试访问控制”treeview1“不是从它创建的线程。”为什么出现?接下来的代码展示如何创建节点阵列,我发送到新的线程:使用线程的问题

void frmMain::FillSelected(TreeNode^ a, array<TreeNode^>^ *Paths) { 
    if (a->Parent == nullptr) { 
     for(int j = 0;j < a->Nodes->Count;j++) { 
      if ((a->Nodes[j]->ImageIndex == 1)&&(a->Nodes[j]->Checked==true)) { 
       (*Paths)->Resize((*Paths), (*Paths)->Length + 1); 
       (*Paths)[(*Paths)->Length-1] = a->Nodes[j]; 
      } 
     } 
    } 
    for(int i = 0;i < a->Nodes->Count;i++) { 
     if (a->Parent == nullptr) { 
     FillSelected(a->Nodes[i], Paths); 
     } else { 
      if(a->Nodes[i]->Checked == true) { 
       (*Paths)->Resize((*Paths), (*Paths)->Length + 1); 
       (*Paths)[(*Paths)->Length-1] = a->Nodes[i]; 
      } 
      if ((a->Nodes[i]->Nodes->Count > 0)&&(a->Nodes[i]->Nodes[0]->FullPath != (a->Nodes[i]->FullPath + "\\"))) { 
       FillSelected(a->Nodes[i], Paths); 
      } 
     } 
    } 
    return; 
} 
+1

我看到这个问题是问,每周至少一次对SO。只是在谷歌中输入错误文本真的很难吗? – Andrey 2010-04-14 10:51:16

回答