由于在线程或者线程池中,我们无法直接操作界面的控件。
在这里我们会用.netframework的其中一大特性——委托。
我第一次接触委托的时候,通过百度百科看它的定义,真实看到云里雾里,但是实际用惯了之后,发觉委托简直就是线程的左右手,基础上线程里都会用到它。
public delegate void UpdateListItamDele(ListViewItem pItem, int pSubindex, string pText);
public void UpdateListItamMethod(UpdateListItamDele temp, ListViewItem pItem, int pSubindex, string pText)
{
if (this.InvokeRequired)
{
Invoke(temp, pItem, pSubindex, pText);
}
else
{
UpdateListItam(pItem, pSubindex, pText);
}
}
public void UpdateListItam(ListViewItem pItem, int pSubindex, string pText)
{
try
{
pItem.SubItems[pSubindex].Text = pText;
}
catch (Exception ex)
{
}
}
上面就是一个简单的委托,用于实现线程中更新ListviewItem的某一项(例如用于文件下载的速度更新等)
调用的方法也很容易
在线程中通过获取object data的参数,可以得到界面的各种信息
UpdateListItamMethod(UpdateListItam,参数1, 参数2, 参数3);
即可完成委托方法的调用。
希望能帮助到C#的初学者快速上手