我使用C#(visual studio 2010)开发了一个Windows Forms应用程序。该应用程序应该连接到服务器获取数据,然后处理这些数据。
public partial class Form1 : Form
{
public string Result = "";
MyServer server = new MyServer();
public Form1()
{
InitializeComponent();
server.RecieveMessage += new MyServer.RecieveMessageEventHandler(server_RecieveMessage);
}
void server_RecieveMessage(object sender, string message)
{
Result = message;
}
public string SendCommand(string Command)
{
server.Send(Command);
//wait untill RecieveMessage event raised
//process Data is recieved
server.Send(AnotherCommand);
//wait untill RecieveMessage event raised
//process Data is recieved
....
//till i get what i want
return Result;
}
我希望在server.Send(Message)
之后等待,直到我在事件中获得结果。有时需要4至5秒才能获得结果。我该怎么做?
server_RecieveMessage
中完成你的任务,而不是等待 SendMessage 返回后再执行。整个异步发送的概念就是为此而生的。请查看什么是 回调函数。 - ntohlMyServer
和Send
方法以及ReceiveMessage
事件的实现。例如,也许仅使用ReceiveMessage
就足以接收消息,无需等待结果;或者发送调用同步,您可以将其输出作为结果。您能否分享更多信息,以便用户根据您的实现而不是猜测来提供答案? - Reza Aghaei