у меня есть этот код для дочерней формы, созванной основной формой заявки, которая проходит некоторые параметры к нему:ParameterizedThreadStart с несколькими параметрами
public ref class MyForm2 : public System::Windows::Forms::Form
{
public:
MyForm2(String^ string1, String^ string2, String^ string3, String^ string4)
{
InitializeComponent();
DoSomething(string1, string2, string3, string4);
}
//...
void DoSomething(String^ string1, String^ string2, String^ string3, String^ string4)
{
//A lot of stuff in here...
}
};
Но так как DoSomething() содержит ряд других функций делают длинные циклы, а также обновление моим Элементы управления графическим интерфейсом (метки и индикатор выполнения), я хочу переместить его в отдельный поток, чтобы мой графический интерфейс не зависал. Я пытаюсь сделать это с помощью параметра ParameterizedThreadStart, но, похоже, я не могу найти способ передать все мои параметры. Любые идеи? Заранее спасибо!
EDIT - Благодаря evhen14! Вот исправленный рабочий код.
public ref class ThreadParams
{
public:
String^ mystring1;
String^ mystring2;
String^ mystring3;
String^ mystring4;
ThreadParams(String^ string1, String^ string2, String^ string3, String^ string4)
{
mystring1 = string1;
mystring2 = string2;
mystring3 = string3;
mystring4= string4;
}
};
public ref class MyForm2 : public System::Windows::Forms::Form
{
public:
MyForm2(String^ mystring1, String^ mystring2, String^ mystring3, String^ mystring4)
{
InitializeComponent();
ThreadParams^ param = gcnew ThreadParams(mystring1, mystring2, mystring3, mystring4);
Thread^ newThread = gcnew Thread(gcnew ParameterizedThreadStart(this, &MyForm2::DoSomething));
newThread->Start(param);
}
//...
void DoSomething(Object^ paramObj)
{
ThreadParams^ param = (ThreadParams^)paramObj;
String^ mystring1 = param->string1;
String^ mystring2 = param->string2;
String^ mystring3 = param->string3;
String^ mystring4 = param->string4;
//A lot of stuff in here...
}
};
Требуется объект. Любой объект. В том числе один с таким количеством полей, которые вам когда-либо нужны. –