我从另一个类调用方法ReceiveMessage()
。如何将值aMessage
从ReceiveCallback()
返回到我调用ReceiveMessage()
的类? aMessage
是字符串类型的公共字段。
public void ReceiveMessage()
{
socket.BeginReceive(messageBuffer,0,messageBuffer.Length,SocketFlags.None,ReceiveCallback,null);
}
void ReceiveCallback(IAsyncResult ar)
{
try
{
int rec = socket.EndReceive(ar);
aMessage = Encoding.ASCII.GetString(messageBuffer, 0, rec);
}
catch(Exception ex) {
Console.WriteLine("SEND ERROR\n{0}", ex.Message);
}
}
答案 0 :(得分:0)
您可以为aMessage
定义事件的类授予,并让调用ReceiveMessage()
的类订阅它。因此,当数据准备就绪时会通知它。
答案 1 :(得分:0)
这确实是异步开始闪耀的地方。这样你就可以更好地做到这一点
public void ReceiveMessage()
{
try {
await socket.ReceiveAsync(messageBuffer,0,messageBuffer.Length,SocketFlags.None);
aMessage = Encoding.ASCII.GetString(messageBuffer, 0, rec);
} catch (Exception ex) {
Console.WriteLine("SEND ERROR\n{0}", ex.Message);
}
}
现在,await行之后的代码将在收到消息后执行