GUI在执行期间冻结

时间:2014-06-25 06:04:11

标签: c# capture freeze ethernet

我开发了一个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中的详细信息按钮。

建议可能的解决方案?

1 个答案:

答案 0 :(得分:0)

您的ui线程中似乎正在接收(通用调试)软件包。解决方案可能是在后台工作者中执行此操作。这将允许您的ui同时更新和接收/处理您的传入包。

MSDN Backgroundworker

  

从MSDN:BackgroundWorker类允许您在a上运行操作   独立的专用线程。下载等耗时的操作   和数据库事务可能会导致您的用户界面(UI)   就好像它们在运行时停止响应一样。当你   想要一个响应式用户界面,你将面临长时间的延迟   通过这样的操作,BackgroundWorker类提供了方便   溶液