首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于委托的有关问题。

2013-09-05 
关于委托的问题。。 Thread TRecprivate void DataRecording_Load(object sender, EventArgs e){TRec new

关于委托的问题。。

 Thread TRec;
        private void DataRecording_Load(object sender, EventArgs e)
        {

            TRec = new  Thread (recording );
            TRec.IsBackground = true;
            TRec.Start(textBox1.Text );

        }
        bool flag = true;

        //委托
        private delegate void rec(string s);
       private  void recording() 
        {
            if (InvokeRequired)
            {
                Invoke(new rec(Msg  ));
            }
            else
            {
                if (mainys.alive == true)
                {

                    while (flag)
                    {
                        for (int i = 0; i < mainys.ArrStrMsgID.Count; i++)
                        {
                            Msg(mainys.ArrStrMsgID[i].ToString() + "收到了" + mainys.Arrnum[i] + "个文件,接收时间为:");
                            foreach (object a in mainys.ArrRec)


                            {
                                string id = a.ToString().Substring(0, 5);
                                if (id == mainys.ArrStrMsgID[i].ToString())
                                {
                                    Msg("                              " + a.ToString().Substring(5));
                                }

                            }
                        }
                        Thread.Sleep(50);
                        textBox1.Clear();
                    }




                }
                else if (main.alive == true)
                {
                    main m = new main();
                }


                TRec.Abort();


            }
            


        }


        private  void Msg(string s)
        {
            textBox1.AppendText(s);
            textBox1.AppendText("\r\n");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            flag = false;
            TRec.Abort();
            this.Close();

        }


为什么在      if (InvokeRequired)
            {
                Invoke(new rec(Msg  ));
            }

这里说我的参数计数不匹配?我Msg(string s)是string的咧,private delegate void rec(string s);委托的时候也是string,为啥不匹配?哪里错了呢?求指教
[解决办法]
 

private void recording()
{
     while (flag)
     {
         for (int i = 0; i < mainys.ArrStrMsgID.Count; i++)
         {
             recordingText(mainys.ArrStrMsgID[i].ToString() + "收到了" + mainys.Arrnum[i] + "个文件,接收时间为:");
             foreach (object a in mainys.ArrRec)


             {
                 string id = a.ToString().Substring(0, 5);
                 if (id == mainys.ArrStrMsgID[i].ToString())
                 {
                     ShowCardInfo("                              " + a.ToString().Substring(5));
                 }
             }
          }
         Thread.Sleep(50);
     }
}

 private delegate void ShowCardInfoDelegate(string data);
       private void ShowCardInfo(string data)
        {
            if (textBox1.InvokeRequired)
            {
                var d = new ShowCardInfoDelegate(ShowCardInfo);
                Invoke(d, data);
            }
            else
            {
                if (!string.IsNullOrEmpty(data))
                {
                   textBox1.AppendText(data);
                }
            }
        }


[解决办法]
 TRec.Abort();你在哪里调用的呢?

热点排行