zhaw-dnet2/Tasks/UrlTester/DT3/DT3.cs

69 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Windows;
using DT2;
namespace DT3 {
public class UrlTesterModel : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
int size;
int time;
string url;
DT2.UrlTester urlTester;
public UrlTesterModel() {
urlTester = new DT2.UrlTester();
IDictionary<string, Stopwatch> sw = new Dictionary<string, Stopwatch>();
urlTester.PageStart += url => { sw.Add(url, Stopwatch.StartNew()); };
urlTester.PageLoaded += (url, size) => {
sw[url].Stop();
int time = (int)sw[url].Elapsed.TotalMilliseconds;
Size = size;
Time = time;
sw.Remove(url);
};
}
public int Size {
get { return size; }
set
{
size = value;
NotifyPropertyChanged(nameof(Size));
}
}
public int Time {
get { return time; }
set
{
time = value;
NotifyPropertyChanged(nameof(Time));
}
}
public string Url {
get { return url; }
set
{
url = value;
NotifyPropertyChanged(nameof(Url));
var _ = urlTester.GetUrlAsync(Url);
}
}
protected void NotifyPropertyChanged(string memberName)
{
if (PropertyChanged != null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(memberName));
}
}
}
}