Я пытаюсь создать класс, который при запуске запускает секундомер и все время истекшее время записывается в локальную переменную Elapsed, к которой у меня есть Listview, к которому привязывается база данных.Но когда я использую этот код, Listview просто отображает 00: 00: 00.00000001 и никогда не меняется.Код класса:
namespace project23
{
public class ActiveEmployee
{
public int EmpID { get; set; }
public string EmpName { get; set; }
private DateTime date;
private BackgroundWorker worker;
public Stopwatch sw;
public ActiveEmployee(int empID, string empName)
{
date = DateTime.Now;
worker = new BackgroundWorker();
worker.DoWork += BackgroundWork;
worker.WorkerReportsProgress = true;
worker.RunWorkerAsync();
}
private TimeSpan elapsed;
public TimeSpan Elapsed
{
get { return elapsed; }
set
{
elapsed = value;
NotifyPropertyChanged("Elapsed");
}
}
private void BackgroundWork(object sender, DoWorkEventArgs args)
{
sw = new Stopwatch();
sw.Start();
if(true)
{
Elapsed = sw.Elapsed;
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
}
Теперь он работает с использованием таймеров вместо
using System;
using System.ComponentModel;
using System.Timers;</p>
<p>namespace Eksamen_Januar_2011
{
public class ActiveEmployee : INotifyPropertyChanged
{
public int EmpID { get; set; }
public string EmpName { get; set; }
private DateTime startDate;
private BackgroundWorker worker;
private Timer timer;</p>
<code> public ActiveEmployee(int empID, string empName)
{
startDate = DateTime.Now;
worker = new BackgroundWorker();
worker.DoWork += BackgroundWork;
timer = new Timer(1000);
timer.Elapsed += TimerElapsed;
worker.RunWorkerAsync();
}
private TimeSpan elapsed;
public TimeSpan Elapsed
{
get { return elapsed; }
set
{
elapsed = value;
NotifyPropertyChanged("Elapsed");
}
}
private void BackgroundWork(object sender, DoWorkEventArgs args)
{
timer.Start();
}
private void TimerElapsed(object sender, ElapsedEventArgs e)
{
Elapsed = DateTime.Now - startDate;
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
</code>
}