首页 新闻 会员 周边 捐助

有关.net里面的线程事件问题,最后懂托管c++

0
悬赏园豆:10 [已关闭问题] 关闭于 2010-10-20 19:38

在程序里面用了一个事件,但是总部执行,部知道怎么弄了,线程这块还很薄弱。希望明白的人士指点。

托管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());
 }

调试正常,执行的时候就是不可以触发事件

代码苦行僧的主页 代码苦行僧 | 菜鸟二级 | 园豆:311
提问于:2010-10-06 16:15
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册