关于委托的问题。。
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();你在哪里调用的呢?