在程序里面用了一个事件,但是总部执行,部知道怎么弄了,线程这块还很薄弱。希望明白的人士指点。
托管c++程序。先问下,在新建的线程里面不可以触发主线程的事件吃了过程吗?
主要代码:在窗体里面有个textbox接受数据。和一个button。另外有一个类,里面参创建线程和触发事件。
窗体:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
lis = gcnew ClassListener();
Form1 ^c=gcnew Form1();
lis->OnAddMessAge += gcnew EventHandler<AddMessageEventArgs^>(c,&Form1::OnAddMessAge);
lis->StartListen();
button1->Enabled = false;
}
//接收广播信息
void OnAddMessAge(Object ^sender, AddMessageEventArgs ^e)
{
Strs=e->mess->ToString();
Invoke_Click(nullptr,nullptr);
MessageBox::Show("messade");
}
private: void Invoke_Click(Object ^sender, EventArgs ^e)
{
MessageBox::Show("click");
textBox1->BeginInvoke(gcnew InvokeDelegate(this,&Form1::InvokeMethod));
}
新类:
public: event EventHandler<AddMessageEventArgs^>^ OnAddMessAge;
void ClassListener:: Listen(void)
{
try
{
。。。。。。。。
while (true)
{
。。。。
receiveDatas = System::Text::Encoding::Unicode->GetString(bytes);
receiveDatas = receiveDatas->TrimEnd(L'0000');
AddMessageEventArgs ^arg = gcnew AddMessageEventArgs();
arg->mess = receiveDatas;
MessageBox::Show(arg->mess);
OnAddMessAge(this,arg);//执行到这里,但是不能触发事件。
}
}
catch (Exception ^ex)
{
MessageBox::Show(ex->ToString());
}
调试正常,执行的时候就是不可以触发事件