假如程序里有N多控件 要得到一个根控制再多线程更新其子控件,如果不写N多个代理有办法吗?
假如有一个TreeView 想多线程更新这个控件,因为有clear(),add() N多操作,可以只用一个简单的函数吗?
像下边这个种方法问题出在哪里?
delegate TreeView GetTreeViewCallback(TreeView t);
private TreeView GetTreeView(TreeView t)
{
if (t.InvokeRequired)
{
GetTreeViewCallback sbc = new GetTreeViewCallback(GetTreeView);
TreeView t=this.Invoke(sbc, new Object[] { t }) as TreeView;
return t;//这种情况报和没做委托是一样的
//return GetTreeView(t); //这种情况会进入死循环
}
else
{
return t;
}
public void Test(){
GetTreeView(treeView1).Nodes.Clear();
GetTreeView(treeView1).Nodes.Add("Test");
}
假如有一个TreeView 想多线程更新这个控件,因为有clear(),add() N多操作,可以只用一个简单的函数吗?
像下边这个种方法问题出在哪里?
delegate TreeView GetTreeViewCallback(TreeView t);
private TreeView GetTreeView(TreeView t)
{
if (t.InvokeRequired)
{
GetTreeViewCallback sbc = new GetTreeViewCallback(GetTreeView);
TreeView t=this.Invoke(sbc, new Object[] { t }) as TreeView;
return t;//这种情况报和没做委托是一样的
//return GetTreeView(t); //这种情况会进入死循环
}
else
{
return t;
}
public void Test(){
GetTreeView(treeView1).Nodes.Clear();
GetTreeView(treeView1).Nodes.Add("Test");
}
解决方案 »
- 求教一个X509Certificate2的问题
- 菜鸟问题:强名称和弱名称的程序集各有什么优缺点
- Console.WriteLine(“The double is {0,10:E} and the int contains {1}”,d,i);
- 请教高手!在线跪求答案!
- 郁闷,极度郁闷,谁来救救我~~~~~~~~~~~
- 20分求解:Windows程序中的问题
- .cs文件
- 泛型调用不同类型的对象
- 制作安装文件的左面快捷方式的问题?
- 请问如何设置能够让MDI窗体中的字窗体无法移动
- 在使用DataGridView控件时,大家遇到过这样的情况吗(见帖图)
- 求助!!!! .net 内存一直增涨的问提。谢谢大家了。
/// <summary>
/// 显示状态
/// </summary>
private void UpdateProcess()
{
if(!lblState.InvokeRequired)
{
OnUpdate();
}
else
{
delegateProcess proc=new delegateProcess(OnUpdate);
Invoke(proc);
}
}
应该改成t=this.Invoke(sbc, new Object[] { t }) as TreeView;