C# 完成事件发生之前经过的时间是否指示套接字速度?

C# 完成事件发生之前经过的时间是否指示套接字速度?,c#,.net,multithreading,sockets,windows-phone-7,C#,.net,Multithreading,Sockets,Windows Phone 7,我使用SendAsync方法通过.NETsocket发送UDP消息 问题是: 在我完成活动之前发生了什么 消息是否已将设备留在线路上?是否可以使用经过的时间来判断传出网络速度 背景: 我需要知道启动UDP发送操作的速率。如果消息在完成事件时已通过网络离开设备,我可能会添加一些缓冲区并启动下一个发送操作。我不关心丢失的消息,甚至不关心实际的传输速率。只是想大致了解一下我可以以多大的速率发送信息。不,一点也不。不仅因为您使用的是UDP,更重要的是,因为您使用的是SendAsync。通常,当您使用以A

我使用
SendAsync
方法通过.NET
socket
发送
UDP
消息

问题是:

在我完成活动之前发生了什么

消息是否已将设备留在线路上?是否可以使用经过的时间来判断传出网络速度

背景:


我需要知道启动UDP发送操作的速率。如果消息在完成事件时已通过网络离开设备,我可能会添加一些缓冲区并启动下一个发送操作。我不关心丢失的消息,甚至不关心实际的传输速率。只是想大致了解一下我可以以多大的速率发送信息。

不,一点也不。不仅因为您使用的是
UDP
,更重要的是,因为您使用的是
SendAsync
。通常,当您使用以Async结尾的方法时,这意味着不会阻止当前线程,它们将在后台运行,因此您无法测量它们何时完成工作。为了进一步阐明这一点,您最好研究多线程。“线程使您的C#程序能够执行并发处理,以便一次可以执行多个操作”,通常
Async
方法以这种方式运行,即异步化。因此,如果您对
Async
这件事有很好的理解,您甚至无法通过这种方式找到速度的衡量标准

网络速度/吞吐量/延迟超出了代码的控制范围。当您找到一些“度量”时,它可能已经发生了变化(可能是显著的),UDP消息甚至不能保证传递,因此,不。您无法判断网络速度,因为您甚至无法知道消息是否到达目的地。感谢各位。它更多的是关于在发送时发生已完成事件之前会发生什么。当字节离开设备已在线路上时,是否会引发该问题?或者仅仅启动了另一个操作系统线程来执行实际的发送?我认为没有足够的契约来知道会发生什么或不会发生什么(无论是在当前的实现还是任何未来的实现上——这可能取决于操作系统版本、驱动程序等)。我很想知道你打算如何使用这个问题的答案-你会有什么不同的做法?它是windows phone 7.1和8上的插座。