Показать сообщение отдельно
Старый 21.02.2013, 14:42   #17
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: Как искать идентичные файлы?

Наконец то разобрался я как создать поток, но тут у меня возникли еще трудности.
При нажатии кнопки "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;
			}
И сразу же после старта потока вылетает екзепшн:
Нажмите на изображение для увеличения
Название: exception.png
Просмотров: 2979
Размер:	23.3 Кб
ID:	18832

Как лучше всего это обойти?
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием