vs2005 中,背景工作執行緒 操作 介面的線程的時候,一般會 報個錯誤,叫 麼子 背景工作執行緒不能夠修改主線程什麼的。解決方案參考如下:
#region 重新載入樹圖
/// <summary>
/// 重新載入樹圖
/// </summary>
private void RedrawTree()
{
if (treeView1.InvokeRequired)
{
treeView1.Invoke(new MethodInvoker(RedrawTree));
return;
}
//ToDo 對介面控制項的修改
}
}
還有種:
Invoke(new MethodInvoker(BeginLoad), null);//適合沒有參數的函數
還有種,是用事件
#region 設定節點的資料
delegate void SetNodeValuesDelegate(TreeNode node, TreeItem item);
/// <summary>
/// 設定節點的資料
/// </summary>
/// <param name="node"></param>
/// <param name="item"></param>
private void SetNodeValues(TreeNode node, TreeItem item)
{
if (treeView1.InvokeRequired)
{
treeView1.Invoke(new SetNodeValuesDelegate(SetNodeValues), node, item);
return;
}
// ToDo 對介面控制項的修改
}
一些原理文章,參考:
http://tag.csdn.net/tag/invokerequired/1.html
http://blog.csdn.net/Depraved_Survival/archive/2007/09/03/1770950.aspx
http://www.yesky.com/20030225/1653758.shtml
http://www.x2blog.cn/jinhong618/?tid=22389
以下是wpf中遇到的問題:
首先,參考文章:http://www.cnblogs.com/zhouyinhui/archive/2007/09/16/894719.html