【发布时间】:2014-08-15 13:56:01
【问题描述】:
我开发了一个 GUI 来通过以太网电缆捕获数据包。 为此,我有 3 个单独的函数,我在单独的线程中运行每个函数。
1) public void Capture_Click(object sender, EventArgs e) //packet capturing
2) public static void PacketHandler(Packet packet) // storing received packets and showing in dataGrid
3) public void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e) // I have Kept a button on each row to get packet details in more detail.
问题:当数据包到来时没有问题,但一旦数据包停止到来,GUI 现在冻结,我无法单击 DataGrid 中的详细信息按钮。
建议可能的解决方案?
【问题讨论】:
-
这些函数有多少在单独的线程中执行并不明显。您没有提供足够的代码来明确问题。您在所有三个线程中如何执行 UI 操作也远不清楚。
-
@DavidHeffernan 我正在使用 public Thread StartTheThread(object sender, EventArgs e) { var t = new Thread(() => Capture_Click(sender, e)) 为每个函数创建新线程; t.Start();返回 t; }
-
看起来不太对,但对于用 cmets 编写的有限摘录,我几乎无能为力
标签: c# capture freeze ethernet