using Oreo.PCMonitor.Commons;
using Oreo.PCMonitor.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Y.Utils.DataUtils.Collections;
using Y.Utils.DataUtils.UnitConvertUtils;
namespace Oreo.PCMonitor.Views
{
///
/// NetDetailsWindow.xaml 的交互逻辑
///
public partial class NetDetailsWindow : Window, INotifyPropertyChanged
{
private string _Status = string.Empty;
public string Status
{
get { return _Status; }
set
{
_Status = value;
OnPropertyChanged("Status");
}
}
private ObservableCollection _ObNetPro = new ObservableCollection();
public ObservableCollection ObNetPro
{
get { return _ObNetPro; }
set
{
_ObNetPro = value;
OnPropertyChanged("ObNetPro");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public NetDetailsWindow()
{
InitializeComponent();
DataContext = this;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(() =>
{
while (IsVisible)
{
if (R.NFS.IsNetFlowRun || R.NFS.IsNetPacketRun)
{
//R.Log.v("IsNetFlowRun: " + R.NFS.IsNetFlowRun + " IsNetPacketRun: " + R.NFS.IsNetPacketRun +
// " Upload: " + R.NFS.NetFlow.UploadData + " Download: " + R.NFS.NetFlow.DownloadData);
UIDgProcessDetailUpdate();
}
Thread.Sleep(1000);
}
});
}
public void Order(object sender, MouseButtonEventArgs e)
{
}
private void UIDgProcessDetailUpdate()
{
Dispatcher.Invoke(new Action(() =>
{
if (R.NFS != null && ListTool.HasElements(R.NFS.NetProcessInfoList))
{
Status = string.Format("下载:{0},上传:{1}(丢包:{2})",
ByteConvertTool.Fmt(R.NFS.NetFlow.DownloadData),
ByteConvertTool.Fmt(R.NFS.NetFlow.UploadData),
R.NFS.LostPacketCount);
ObNetPro = new ObservableCollection(R.NFS.NetProcessInfoList);
//label1.Text = "丢包数:" + R.NFS.LostPacketCount;
//LbStatus.Content = "下载:" + ByteConvertTool.Fmt(R.NFS.NetFlow.DownloadData) +
// " 上传:" + ByteConvertTool.Fmt(R.NFS.NetFlow.UploadData);
//R.NFS.NetProcessInfoList.ForEach(p =>
//{
// bool isUpdate = false;
// foreach (DataGridViewRow r in DgProcessDetail.Rows)
// {
// if (r.Cells["CoName"].Value.ToString() == p.ProcessName)
// {
// isUpdate = true;
// r.Cells["CoDownload"].Value = ByteConvertTool.Fmt(p.DownloadData);
// r.Cells["CoUpload"].Value = ByteConvertTool.Fmt(p.UploadData);
// r.Cells["CoDownloadCount"].Value = ByteConvertTool.Fmt(p.DownloadDataCount);
// r.Cells["CoUploadCount"].Value = ByteConvertTool.Fmt(p.UploadDataCount);
// r.Cells["CoConnectionCount"].Value = p.ConnectCount;
// }
// }
// if (!isUpdate)
// {
// DgProcessDetail.Rows.Add(new object[] {
// p.ProcessIcon,p.ProcessName,
// ByteConvertTool.Fmt(p.DownloadData),ByteConvertTool.Fmt(p.UploadData),
// ByteConvertTool.Fmt(p.DownloadDataCount),ByteConvertTool.Fmt(p.UploadDataCount),
// p.DownloadBagCount});
// }
//});
}
}));
}
}
}