Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2012, 19:25   #1
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
Восклицание Проблема с выполнением функции 2-й раз.

Доброго времени.

Измучал свой мозг, не могу понять в чем дело. Есть функция:
Код:
private: void CheckGameCotent(){
	int IdInTable = Convert::ToInt32(startGameCheckHashe->Tag);
	String^ appGameId = (String^)dataGridView2->Rows[IdInTable]->Cells[1]->Value;
	String^ appGameName = mainCaption->Text;
	memoEdit2->Text = "";

	StartCheckGameCotent^ d1 = gcnew StartCheckGameCotent(this, &Form1::StartCheckHash);
	AddCheckGameCotent^ d2 = gcnew AddCheckGameCotent(this, &Form1::AddCheckHash);
	FinishCheckGameCotent^ d3 = gcnew FinishCheckGameCotent(this, &Form1::FinishCheckHash);
	UpdateCheckGameCotent^ d4 = gcnew UpdateCheckGameCotent(this, &Form1::UpdateCheckHash);

	try
	{
		this->Invoke(d1, gcnew array<Object^> { appGameName, _appGameInfoDir + "\\" + appGameId });

		for(int i=0; i < dataGridView1->RowCount -1; ++i){
			//Application::DoEvents();
			string dir = SysToStd((String^)dataGridView3->Rows[0]->Cells[0]->Value);
			string str1 = SysToStd((String^)dataGridView1->Rows[i]->Cells[0]->Value);
			string str2 = SysToStd((String^)dataGridView1->Rows[i]->Cells[1]->Value);
			bool^ check_foreve = GetTableCheck( (DataGridViewCheckBoxCell^)dataGridView1->Rows[i]->Cells[2] );

			if(!Convert::ToBoolean(check_foreve) && File::Exists( StdToSys(dir + "\\" + str1) )) {
				//MessageBox::Show(StdToSys(dir + "\\" + str1) + "is ignored" ,"");
				//string md5Hash = SysToStd(GetMD5HashFromFile(StdToSys(dir + "\\" + str1)));

				//if(md5Hash != str2)
				//	 this->Invoke(d2, gcnew array<Object^> {StdToSys(str1 + "\n")});
			} else {
				string md5Hash = SysToStd(GetMD5HashFromFile(StdToSys(dir + "\\" + str1)));

				if(md5Hash != str2)
					this->Invoke(d2, gcnew array<Object^> {StdToSys(str1 + "\n")});
			}
			this->Invoke(d4, gcnew array<Object^> {i});
		}
		this->Invoke(d3, gcnew array<Object^> {memoEdit2->Lines->Length});
	}
	catch (System::Exception^ e)
	{
		MessageBox::Show("ERROR" ,_appName);
	}
}
Его я выполняю в отдельном потоке, первый раз функция выполняется на все 100%, при повторном вызове приложение вылиться а отладчик жалуется на StartCheckGameCotent^ d1 = gcnew StartCheckGameCotent(this, &Form1::StartCheckHash); - Необработанное исключение типа "System.InvalidOperationExcepti on" произошло в System.Windows.Forms.dll

Сам код делегейта:
Код:
void StartCheckHash( String^ appGameName, String^ GameResoureDir ) {
	alertControl1->Show(this, _appName, _MSG_CHECK_HASH_START + " " + appGameName); 
	progressBarControl1->Visible = true;
	downloadGroup->Visible = true;

	progressBarControl2->Visible = false;
	UpdateButton->Visible = false;
	CancelUpdateButton->Visible = false;

	try
	{
		DS->Tables->Clear();
		DS->ReadXml(GameResoureDir + "\\patch_list.xml");
		dataGridView1->DataSource = DS->Tables[0];
	}
	catch(System::Exception^ e)
	{
		MessageBox::Show("XML data read error");
	}
}
Если из делегейта убрать dataGridView1->DataSource = DS->Tables[0]; то код выполняется каждый раз, но мне необходимо подгружать данные в таблицу. Буду рад любой помощи!

Последний раз редактировалось men232; 14.02.2012 в 19:27.
men232 вне форума Ответить с цитированием
Старый 15.02.2012, 16:41   #2
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
По умолчанию

Всё ребята, прошу закрыть тему, как всегда решение до удивления было простое, если бы компилятор пожаловался на нужную строку, решил бы проблемы быстрее.
memoEdit2->Text = ""; забыл что из потока нельзя менять свойства компонентов!
men232 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с выполнением javascript Ukraine JavaScript, Ajax 1 01.01.2012 00:22
Проблема с выполнением запроса к БД AgentSmit PHP 2 14.04.2011 02:13
Проигрывание функции один раз ///Ronnie JavaScript, Ajax 1 18.02.2011 22:26
Проблема с выполнением скриптов в IE rom@nыч JavaScript, Ajax 7 17.08.2008 18:56
Проблема с выполнением скрипта Seqular HTML и CSS 1 12.08.2007 03:54