如何在Windows窗体中使用Task.Run(...)? - C#[关闭]

问题描述 投票:-2回答:1

我正在尝试使用某人控制台代码作为客户端 - 服务器应用程序。在Main函数中,他使用了它

Task.Run(() => { while (true) ReceivePacket(); });

用于接收数据包。他从一个客户端发送一个数据包,并在另一个客户端上接收它。 ReceivePacket是一个自定义函数,可以在收到数据包时执行某些操作。

我正在使用WinForms,我需要以某种方式捕获所有发送的数据包。如果我将这一行放在主窗体的构造函数中会怎么样?它会起作用吗?或者我应该把它放在别的地方?

我的应用还没有完成,所以我不能只是启动和检查。

c# client-server packet-capture
1个回答
1
投票

您使用Task.Run进行CPU绑定操作,而不是网络调用。请参阅Stephen Cleary的this blog。如果您需要使用Task.Run进行网络呼叫(客户端 - 服务器)不正确。

要与服务器通信,您可以通过Web API在服务器上公开您的操作。在客户端(即您的Web表单)使用HttpClient调用API。请参阅this tutorial以了解如何从客户端调用Web API。

© www.soinside.com 2019 - 2024. All rights reserved.