以编程方式跟踪 UWP 应用中的 SignalR 数据使用情况

Programmatically tracking SignalR data usage in a UWP app

我有一个连接到服务器以使用 SignalR 发送和接收数据的 UWP 应用。

我想跟踪我的连接使用的数据量(每天)。

从应用程序跟踪所有互联网使用情况也是可以接受的,因此一种通用技术而不是专门针对 SignalR 也是有用的。

有人有什么建议吗?我研究了实现自定义 Microsoft.AspNet.SignalR.Client.Http.IHttpClient 和网络跟踪(https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-configure-network-tracing - 在 UWP 上不可用?)

@Ipsit Gaur 的这项技术效果很好,不过我不得不稍微修改一下

var internetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
if (internetConnectionProfile != null)
{
    var networkUsage = await internetConnectionProfile.GetNetworkUsageAsync(DateTimeOffset.UtcNow.Date, DateTimeOffset.UtcNow, DataUsageGranularity.PerDay, new NetworkUsageStates()).AsTask();
    totalBytesSentToday = networkUsage.Aggregate(0ul, (memo, nu) => memo + nu.BytesSent);
    totalBytesReceivedToday = networkUsage.Aggregate(0ul, (memo, nu) => memo + nu.BytesReceived);
}

这对你有用 -

string localDataUsage = string.Empty;
    DateTime CurrTime = DateTime.Now;
    TimeSpan TimeDiff = new TimeSpan(1, 0, 0);
    ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();

if (InternetConnectionProfile == null)
{
    LocalUsageData.Text = "Not connected to Internet" + "\n";
}
else
{
    var LocalUsage = InternetConnectionProfile.GetNetworkUsageAsync(CurrTime.Subtract(TimeDiff), CurrTime);

    localDataUsage = "Local Data Usage:\n";
    localDataUsage += " Bytes Sent     : " + LocalUsage.BytesSent + "\n";
    localDataUsage += " Bytes Received : " + LocalUsage.BytesReceived + "\n";
    LocalUsageData.Text = localDataUsage;
}