Это второй вопрос из серии об обновлении пользовательского интерфейса из другого потока. Я пытаюсь использовать делегата, чтобы сообщить пользовательскому интерфейсу о выполнении функции обновления (данные передавать не нужно). Я создал делегата в потоке пользовательского интерфейса и объявил его поверх потока пользовательского интерфейса:
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 delegate MyDel;
Я получаю сообщение об ошибке:
Ошибка C2146: синтаксическая ошибка: отсутствует
';'
перед идентификатором'MyDel'
.
Если я попробую это
extern delegate void MyDel();
Я получаю сообщение об ошибке:
Ошибка C2144: синтаксическая ошибка:
'void'
должно предшествовать';'
Итак, как мне заставить другой класс распознать тип делегата, чтобы я мог передать указатель делегата конструктору?