读书人

关于委托的有关问题。

发布时间: 2013-09-05 16:02:07 作者: rapoo

关于委托的问题。。

 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();你在哪里调用的呢?

读书人网 >C#

热点推荐