\"refactor: Öع¹ÍøÂ繤¾ßÀಢ¸üÐÂÏà¹ØÊÓͼ\"
\"- ÖØÃüÃû NetworkInfoUtil1.cs Ϊ NetworkInfoUtil.cs ²¢¸üÐÂÆäʵÏÖ\" \"- µ÷Õû NetworkMonitorViewModel ÒÔʹÓøüкóµĹ¤¾ßÀà\" \"- ͬ²½ǰ¶Ë×é¼þ¶¨ÒåÓë½â¾ö·½°¸Óû§ÅäÖÃ\"
This commit is contained in:
1 parent
b196e511b6
commit
6d2ee0118f
4 files changed
+36
-11
No files matched your search
+1
-1
@@ -10,7 +10,7 @@ namespace Common.Utils
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 网络监控帮助类 - 使用 .NET 内置的 NetworkInterface 类
|
/// 网络监控帮助类 - 使用 .NET 内置的 NetworkInterface 类
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class NetworkMonitorHelper1
|
public class NetworkMonitorHelper
|
||||||
{
|
{
|
||||||
#region 公共类和方法
|
#region 公共类和方法
|
||||||
|
|
||||||
@@ -50,6 +50,7 @@
|
|||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATcpIpSendTraceData_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F28_003Fce7c9cfa_003FTcpIpSendTraceData_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATcpIpSendTraceData_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F28_003Fce7c9cfa_003FTcpIpSendTraceData_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATimer_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003Fa8_003F04476824_003FTimer_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATimer_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003Fa8_003F04476824_003FTimer_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATimer_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Ffe2ae574758f4da99bb3bfcba69a0a40b6928_003F7f_003Fb5cb1e21_003FTimer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATimer_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Ffe2ae574758f4da99bb3bfcba69a0a40b6928_003F7f_003Fb5cb1e21_003FTimer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATraceEventLevel_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F3e_003F5dae014e_003FTraceEventLevel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATraceEventNativeMethods_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F03_003Fcb4b3163_003FTraceEventNativeMethods_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATraceEventNativeMethods_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F03_003Fcb4b3163_003FTraceEventNativeMethods_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATraceEventSession_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F4e_003F99d3e433_003FTraceEventSession_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATraceEventSession_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F4e_003F99d3e433_003FTraceEventSession_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATraceEvent_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F4d_003F09175cdc_003FTraceEvent_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATraceEvent_002Ecs_002Fl_003AC_0021_003FUsers_003Fcharlatans_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F25b12134b1124ffbab73641db2e54e5b310830_003F4d_003F09175cdc_003FTraceEvent_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ namespace Shell.ViewModel;
|
|||||||
public class NetworkMonitorViewModel : INotifyPropertyChanged
|
public class NetworkMonitorViewModel : INotifyPropertyChanged
|
||||||
{
|
{
|
||||||
private readonly DispatcherTimer _updateTimer;
|
private readonly DispatcherTimer _updateTimer;
|
||||||
private List<NetworkMonitorHelper1.NetworkInterface> _interfaces;
|
private List<NetworkMonitorHelper.NetworkInterface> _interfaces;
|
||||||
private const string SELECT_ALL_TEXT = "选择全部";
|
private const string SELECT_ALL_TEXT = "选择全部";
|
||||||
private readonly bool _isDesignMode;
|
private readonly bool _isDesignMode;
|
||||||
|
|
||||||
@@ -29,9 +29,9 @@ public class NetworkMonitorViewModel : INotifyPropertyChanged
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkInterfaceItem _selectedInterface;
|
private NetworkInterfaceItem? _selectedInterface;
|
||||||
|
|
||||||
public NetworkInterfaceItem SelectedInterface
|
public NetworkInterfaceItem? SelectedInterface
|
||||||
{
|
{
|
||||||
get => _selectedInterface;
|
get => _selectedInterface;
|
||||||
set
|
set
|
||||||
@@ -207,7 +207,7 @@ public class NetworkMonitorViewModel : INotifyPropertyChanged
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 获取所有网络接口
|
// 获取所有网络接口
|
||||||
_interfaces = NetworkMonitorHelper1.GetNetworkInterfaces();
|
_interfaces = NetworkMonitorHelper.GetNetworkInterfaces();
|
||||||
|
|
||||||
// 清除现有项目
|
// 清除现有项目
|
||||||
NetworkInterfaces.Clear();
|
NetworkInterfaces.Clear();
|
||||||
@@ -273,7 +273,7 @@ public class NetworkMonitorViewModel : INotifyPropertyChanged
|
|||||||
TotalSpeed = "0.00 B/s";
|
TotalSpeed = "0.00 B/s";
|
||||||
|
|
||||||
// 重置统计数据,以便立即开始新的统计
|
// 重置统计数据,以便立即开始新的统计
|
||||||
NetworkMonitorHelper1.ResetStatistics();
|
NetworkMonitorHelper.ResetStatistics();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateDesignTimeSpeed()
|
private void UpdateDesignTimeSpeed()
|
||||||
@@ -334,12 +334,12 @@ public class NetworkMonitorViewModel : INotifyPropertyChanged
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
NetworkMonitorHelper1.NetworkSpeed speed;
|
NetworkMonitorHelper.NetworkSpeed speed;
|
||||||
|
|
||||||
if (SelectedInterface.IsSelectAll)
|
if (SelectedInterface.IsSelectAll)
|
||||||
{
|
{
|
||||||
// 计算所有接口的总网速
|
// 计算所有接口的总网速
|
||||||
speed = NetworkMonitorHelper1.CalculateTotalSpeed();
|
speed = NetworkMonitorHelper.CalculateTotalSpeed();
|
||||||
StatusText = "显示所有网络接口的总网速";
|
StatusText = "显示所有网络接口的总网速";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -348,7 +348,7 @@ public class NetworkMonitorViewModel : INotifyPropertyChanged
|
|||||||
var networkInterface = SelectedInterface.NetworkInterface;
|
var networkInterface = SelectedInterface.NetworkInterface;
|
||||||
if (networkInterface != null)
|
if (networkInterface != null)
|
||||||
{
|
{
|
||||||
speed = NetworkMonitorHelper1.CalculateSpeedByName(networkInterface.Name);
|
speed = NetworkMonitorHelper.CalculateSpeedByName(networkInterface.Name);
|
||||||
|
|
||||||
// 显示接口状态
|
// 显示接口状态
|
||||||
string statusText = $"正在监控: {networkInterface.Name} ({networkInterface.TypeDescription})";
|
string statusText = $"正在监控: {networkInterface.Name} ({networkInterface.TypeDescription})";
|
||||||
@@ -392,7 +392,7 @@ public class NetworkMonitorViewModel : INotifyPropertyChanged
|
|||||||
_updateTimer.Stop();
|
_updateTimer.Stop();
|
||||||
|
|
||||||
// 重置统计数据
|
// 重置统计数据
|
||||||
NetworkMonitorHelper1.ResetStatistics();
|
NetworkMonitorHelper.ResetStatistics();
|
||||||
|
|
||||||
// 重新加载接口
|
// 重新加载接口
|
||||||
LoadNetworkInterfaces();
|
LoadNetworkInterfaces();
|
||||||
@@ -455,7 +455,7 @@ public class NetworkInterfaceItem
|
|||||||
public string TypeDescription { get; set; }
|
public string TypeDescription { get; set; }
|
||||||
public bool IsConnected { get; set; }
|
public bool IsConnected { get; set; }
|
||||||
public bool IsSelectAll { get; set; }
|
public bool IsSelectAll { get; set; }
|
||||||
public NetworkMonitorHelper1.NetworkInterface NetworkInterface { get; set; }
|
public NetworkMonitorHelper.NetworkInterface? NetworkInterface { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RelayCommand : ICommand
|
public class RelayCommand : ICommand
|
||||||
|
|||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
// @ts-nocheck
|
||||||
|
// Generated by unplugin-vue-components
|
||||||
|
// Read more: https://github.com/vuejs/core/pull/3399
|
||||||
|
// biome-ignore lint: disable
|
||||||
|
export {}
|
||||||
|
|
||||||
|
/* prettier-ignore */
|
||||||
|
declare module 'vue' {
|
||||||
|
export interface GlobalComponents {
|
||||||
|
CommandManager: typeof import('./src/components/CommandManager.vue')['default']
|
||||||
|
IconCommunity: typeof import('./src/components/icons/IconCommunity.vue')['default']
|
||||||
|
IconDocumentation: typeof import('./src/components/icons/IconDocumentation.vue')['default']
|
||||||
|
IconEcosystem: typeof import('./src/components/icons/IconEcosystem.vue')['default']
|
||||||
|
IconSupport: typeof import('./src/components/icons/IconSupport.vue')['default']
|
||||||
|
IconTooling: typeof import('./src/components/icons/IconTooling.vue')['default']
|
||||||
|
NetworkConnectionPanel2: typeof import('./src/components/NetworkConnectionPanel2.vue')['default']
|
||||||
|
NMessageProvider: typeof import('naive-ui')['NMessageProvider']
|
||||||
|
NVirtualList: typeof import('naive-ui')['NVirtualList']
|
||||||
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
|
RouterView: typeof import('vue-router')['RouterView']
|
||||||
|
TitleBar: typeof import('./src/components/TitleBar.vue')['default']
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user