Это второй вопрос из серии, касающийся обновления пользовательского интерфейса из другого потока. Я пытаюсь использовать делегата, чтобы сказать пользовательскому интерфейсу выполнить функцию обновления (данные не нужно передавать). Я создал делегат в потоке пользовательского интерфейса и объявил его поверх потока пользовательского интерфейса:
delegate void MyDel();
public ref class Form1 : public System::Windows::Forms::Form
{
// .....
void testFunc()
{
this->local_long_textBox->Text = "Test!!!!!!!";
}
private:
void startUp()
{
MyDel^ DelInst = gcnew MyDel(this,&CotStinger::Form1::testFunc);
Я хотел бы передать DelInst другому потоку при создании, но когда я пытаюсь объявить MyDel как extern, как это поверх другого модуля:
extern delegate MyDel;
Я получаю ошибку:
Ошибка C2146: синтаксическая ошибка: отсутствует ';'
перед идентификатором 'MyDel'
.
Если я попробую это
extern delegate void MyDel();
Я получаю ошибку:
Ошибка C2144: синтаксическая ошибка: 'void'
должен предшествовать ';'
Так как же заставить другой класс распознавать тип делегата, чтобы я мог передать указатель делегата в конструктор?