VC.net 跨线程调用windows控件 ,是VC++, 不是VC#
C#统治了.net, 所有的例子都是C#的。
跨线程调用windows控件也算是个常见的问题了,有成熟的代码和案例参考,然而,全部都是C#的代码。
当我改写成VC.net的时候,调试有报错,请帮忙看看如何修改?
代码如下:
public:delegate void DoWorkD(int N);
DoWorkD^ d;
//加载窗体时创建一个新线程
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
Thread^ demoThread= gcnew Thread(gcnew ThreadStart(this,&mt::Form1::ThreadProcSafe));
demoThread->Start();
}
//新线程
private: void ThreadProcSafe()
{
DoWorkD^ d=gcnew DoWorkD(DoWork);//调试时有两个错误指向这里!!!请帮忙修改
DoWork(1);
}
private: void DoWork(int Nums)
{
if (this->button1->InvokeRequired)
{
this->button1->Invoke(d, Nums);
}
else
{
this->button1->Text=L"Ddd";
}
}