Показать сообщение отдельно
Старый 22.02.2013, 19:51   #3
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: Доступ к GUI с иного потока

Да! Спасибочки!
Но как пользоваться этим Invoke() ???

Уже настрочил делегатов:
public: delegate void MyDel();
...
	public: void DoProcessing()
			{
				MyDel^ DelInst = gcnew MyDel(this, &mainForm::CleanProgressBar);
				if (progressBar->InvokeRequired)
					DelInst->Invoke();
				DelInst = gcnew MyDel(this, &mainForm::ResetProgressBar);
				if (progressBar->InvokeRequired)
					DelInst->Invoke();

				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;
			}

...

	public: void CleanProgressBar()
			{
				progressBar->Value = 1;
			}

	public: void ResetProgressBar()
			{
				progressBar->Maximum = fileBase->candidates->Count;
			}
Но все тот же екзепшн вылазит!
Сразу же при: progressBar->Value = 1;
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием