Наконец то разобрался я как создать поток, но тут у меня возникли еще трудности.
При нажатии кнопки "Start" выполняется данный код:
public:
Thread^ processing;
FileBase^ fileBase;
...
private: System::Void buttonStart_Click(System::Object^ sender, System::EventArgs^ e) {
buttonStart->Enabled = false;
resultView->Rows->Clear();
array<String^>^ tmp = gcnew array<String^>(directoryList->Items->Count);
directoryList->Items->CopyTo(tmp,0);
fileBase = gcnew FileBase(tmp, checkboxSearchSubdir->Checked);
ThreadStart^ fileBaseDelegate = gcnew ThreadStart(this, &mainForm::DoProcessing);
processing = gcnew Thread(fileBaseDelegate);
processing->Start();
}
Ну а сам код выполняемой функции:
public: void DoProcessing()
{
progressBar->Value = 0;
progressBar->Maximum = fileBase->candidates->Count;
for each(KeyValuePair<String^,Int64> iCandidate in fileBase->candidates)
{
if (fileBase->IsDuplicate(iCandidate))
resultView->Rows->Add(iCandidate.Key , iCandidate.Value.ToString());
progressBar->Value++;
}
buttonStart->Enabled = true;
}
И сразу же после старта потока вылетает екзепшн:
Как лучше всего это обойти?