VS2010窗体多线程问题。

2024-11-18 22:58:30
推荐回答(2个)
回答(1):

经测试,没有再现你的错误,请贴出完整源代码,供本人测试。
另外,你 gcnew ThreadStart(this, do_server) 中的 do_server 实参写错了,应该是:&窗体类名::do_server。

以下代码测试,完全正常。
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
Control::CheckForIllegalCrossThreadCalls = false; // 取消线程安全检查
}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Thread^ th = gcnew Thread(gcnew ThreadStart(this, &Form1::do_server));
th->Start();
}

private: System::Void do_server()
{
this->button1->Text = "abcdefg"; // 成功访问了 button1 控件,并设置了 Text 属性
MessageBox::Show("AAAAAAAAAAAAAAA");
}

回答(2):

只能访问静态的,或者传递一个委托访问