阵列C#WPF中的平均所有PingReply RoundTripTime

阵列C#WPF中的平均所有PingReply RoundTripTime,c#,arrays,wpf,ping,long-integer,C#,Arrays,Wpf,Ping,Long Integer,我正在用C#WPF编写一个新程序,其中一部分包括平均10个PingReply.RoundTripTime,然后将其除以2,得到单程行程时间。我将所有的PingReply实例放在一个数组中,arrayReply,现在要执行上述操作。我试过很多方法,但我现在有: //New integer replyCount for counting ping replies int replyCount = 0; long Atime = 0; long time = 0; //for each PingRe

我正在用C#WPF编写一个新程序,其中一部分包括平均10个
PingReply.RoundTripTime
,然后将其除以2,得到单程行程时间。我将所有的
PingReply
实例放在一个数组中,
arrayReply
,现在要执行上述操作。我试过很多方法,但我现在有:

//New integer replyCount for counting ping replies
int replyCount = 0;
long Atime = 0;
long time = 0;

//for each PingReply instance in arrayReply
foreach (PingReply r in arrayReply)
{
    //set long integer (64-bit) Atime (time of ping) to the previous value of Atime
    //plus half of the next RoundTripTime divided by 2 (for approx one-way distance)
    long oneWayTime = r.RoundtripTime / 2;

    long x = Atime + oneWayTime;

    //add one to replyCount
    replyCount++;

    //Divide Atime by number of replies
    time = x / replyCount;
}

pingAverage.Text = time.ToString();
但是,每次的结果都是0。如何解决此问题?

使用LINQ平均:

var time = arrayReply.Average(pr => pr.RoundtripTime) / 2;

如果您在同一台计算机上使用ping,时间将非常短,因此零是正常的。尝试远程PC。使用调试器。逐步执行并检查变量值。当出现与您预期不同的情况时,请找出原因。看起来,除了在初始化期间,您从未为
Atime
赋值,因此它总是为0。此外,您还陷入了糟糕的评论陷阱<代码>replyCount++不值得评论。您的下一条评论甚至没有错误。在尝试计算平均值时,将
time
设为整数数据类型(
long
)不是一个好主意。