Tag: 遍历

HTML遍历非常缓慢

我遇到过简单地使用C#迭代MSHTML元素非常慢。 这是通过document.all集合迭代三次的小例子。 我们有空白的WPF应用程序和名为Browser的WebBrowser控件: public partial class MainWindow { public MainWindow() { InitializeComponent(); Browser.LoadCompleted += DocumentLoaded; Browser.Navigate(“http://google.com”); } private IHTMLElementCollection _items; private void DocumentLoaded(object sender, NavigationEventArgs e) { var dc = (HTMLDocument)Browser.Document; _items = dc.all; Test(); Test(); Test(); } private void Test() { var sw = new Stopwatch(); sw.Start(); int i; for (i = 0; i […]

获取中继器的项目

我试图在页面移动(分页)之前获取所有转发器选中的转发器项目的复选框,并将它们存储在某个地方。 foreach (RepeaterItem ri in rpt.Items) { CheckBox box = (CheckBox)ri.FindControl(“chkBox”); if (box.Checked) { … } } 问题是我从哪里调用此函数? 我试图从ObjectDataSource1_Selected(我使用objectdatasource填充转发器)和ObjectDataSource1_Selecting调用它,但rpt.Items.Count也是0。 rpt_PreRender()事件,返回正确数量的项目,但它在选中复选框之前发生,而不是之后。 我能做什么?

遍历树时使用线程

我想加快穿越树的过程。 以下是节点的示例: class Node { public List Children { get; set; } public int SompeProperty { get; set; } public String SomeOtherProperty { get; set; } } 我遍历尝试的方式如下: static void TraverseTree(Node ParentNode) { if (ParentNode.Children == null) return; foreach (var child in ParentNode.Children) { TraverseTree(child); } } ParentNode.Children方法大约需要1毫秒,因为Node表示文件或目录。 我只是用这个节点的例子来说明我的观点。 所以如果你考虑一下,如果第一个节点有4个子节点,并且每个子节点都有10000000个后代,那么如果我们在一个separeate线程中利用并行编程来遍历这4个子节点中的每一个,我们就可以提高这种遍历的速度。 如果那就是情景那么我会采取这种方法。 但如果我事先不知道树的结构我怎么能这样做呢? 我一直在考虑: 1)开始遍历树,将具有子节点的前10个节点放在堆栈上,然后在单独的线程上开始遍历每个节点。 2)做类似的事情: […]

用于访问N(未知)维度矩阵中的所有点的算法

我有一个多维矩阵,可以有任何数量的维度大于一。 寻找可以访问矩阵中每个点的有效算法。 关于代码的一些信息:矩阵具有值访问器(尽管这些并不真正相关)。 object value = matrixInstance.GetValue(int[] point); matrixInstance.SetValue(object value, int[] point); 注意:参数点是索引数组,必须与维度匹配,否则抛出exception。 有关矩阵结构的信息可以通过以下方式获得: int numDims = matrixInstance.Rank; //# dimensions int sizeDim = matrix.getRankSize(int index); // length of specified dimension 我想使用相对有效的算法迭代矩阵的所有可能点。 例如,在2×3 2D矩阵中,将访问以下六个点: [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] 该算法必须达到N维:2,3,4等。 为了提高效率,我最终会使用C#迭代器来返回点数。

如何按字母顺序遍历Hashtable的键?

以递增的字母顺序遍历哈希表键的最简单方法是什么?

遍历层次结构对象c#

如果我有类似下面的类。 我如何遍历它直到其属性SomeObjects.count = 0 public class SomeObject { public String Name { get; set; } public List SomeObjects { get; set; } } 非常感谢

二进制搜索树遍历,比较两个指针的相等性

我正在阅读Cormen算法手册(二叉搜索树章节),它说有两种方法可以在没有递归的情况下遍历树: 使用堆栈和一个更复杂但更优雅的解决方案,它不使用堆栈,但假设可以测试两个指针的相等性 我已经实现了第一个选项(使用堆栈),但不知道如何实现后者。 这不是一个家庭作业,只是阅读教育自己。 有关如何在C#中实现第二个的任何线索?

C#图遍历

该算法在遍历图中的节点方面做得很好。 Dictionary visited = new Dictionary(); Queue worklist = new Queue(); visited.Add(this, false); worklist.Enqueue(this); while (worklist.Count != 0) { Node node = worklist.Dequeue(); foreach (Node neighbor in node.Neighbors) { if (!visited.ContainsKey(neighbor)) { visited.Add(neighbor, false); worklist.Enqueue(neighbor); } } } 我可以使用它来查找图中的目标节点。 工作清单在处理工作清单时将项目出列(或弹出)。 找到目标后,如何返回节点的完整路径? 更新我试图找出如何反转根路径。 在根节点上调用该方法,之后,子节点可能有两个父节点,因此它不像在每个节点上调用父属性并遍历备份那么简单。 该方法的目标是找到路径,而不是迭代所有节点,或检查节点是否存在。

UDP打孔实现

我正在尝试完成UDP打孔。 我的理论基于这篇文章和WIKI页面 ,但我面临着C#编码的一些问题。 这是我的问题: 使用此处发布的代码,我现在能够连接到远程计算机并在同一端口上侦听传入连接(将2个UDP客户端绑定到同一端口)。 由于某种原因,对同一端口的两个绑定相互阻止接收任何数据。 我有一个响应我的连接的UDP服务器,所以如果我先将任何其他客户端绑定到端口之前连接到它,我会得到它的响应。 如果我将另一个客户端绑定到端口,则不会在任一客户端上接收数据。 以下是显示我的问题的2个代码段。 第一个连接到远程服务器以在NAT设备上创建规则,然后在另一个线程上启动侦听器以捕获传入的数据包。 然后代码将数据包发送到本地IP,以便侦听器获取它。 第二个只发送数据包到本地IP,以确保这是有效的。 我知道这不是真正的打孔,因为我在不使用NAT设备的情况下将数据包发送给自己。 我现在面临一个问题,如果我在NAT设备旁边使用计算机进行连接,我认为这不会有任何不同。 [编辑] 2/4/2012我尝试在我的网络上使用另一台计算机和WireShark(数据包嗅探器)来测试监听器。 我看到从其他计算机传入的数据包但是没有被侦听器UDP客户端(udpServer)或发送方UDP客户端(客户端)接收。 [编辑] 2/5/2010我现在添加了一个函数调用,在初始发送和接收数据包之后关闭第一个UDP客户端,只有第二个UDP客户端才能侦听端口。 这有效,我可以从该端口上的网络内部接收数据包。 我现在将尝试从网络外部发送和接收数据包。 我一发现就会发布我的发现。 使用此代码,我在侦听客户端上获取数据: static void Main(string[] args) { IPEndPoint localpt = new IPEndPoint(Dns.Resolve(Dns.GetHostName()).AddressList[0], 4545); ThreadPool.QueueUserWorkItem(delegate { UdpClient udpServer = new UdpClient(); udpServer.ExclusiveAddressUse = false; udpServer.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); udpServer.Client.Bind(localpt); IPEndPoint inEndPoint = new IPEndPoint(IPAddress.Any, 0); Console.WriteLine(“Listening […]

使用递归函数遍历XML

如何使用c#中的递归函数遍历(按顺序读取所有节点)XML文档? 我想要的是读取xml中的所有节点(具有属性)并以与xml相同的结构打印它们(但没有Node Localname) 谢谢